for each...in

  • 版本网址缩略名: JavaScript/Reference/Statements/for_each...in
  • 版本标题: for each...in
  • 版本 id: 43296
  • 创建于:
  • 创建者: ziyunfei
  • 是否是当前版本?
  • 评论 1 words added, 1 words removed

修订内容

{{ non-standard_header() }}

概述

使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行.

注意: for each...inECMA-357 (E4X) 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分.

Statement
Implemented in: JavaScript 1.6
ECMA Version: none

语法

for each (variable in object)
  statement

参数

variable
用来遍历属性值的变量, 前面的 var 关键字是可选的. 改变量是函数的局部变量而不是语句块的局部变量.
object
该对象的属性值会被遍历
statement
遍历属性值时执行的语句. 如果想要执行多条语句, 请用({ ... }) 将多条语句括住.

描述

一些对象中的内置属性无法被遍历到,包括所有的内置方法,例如String对象的indexOf方法. 不过, 所有的用户自定义属性都是可遍历的.

例子

警告: for each...in只能用在遍历对象上,不要用它来遍历数组,详细.

下面的代码片段演示如何遍历一个对象的属性值, 并计算它们的和:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8

相关链接

 

{{ languages( { "es":"es/Referencia_de_JavaScript_1.5/Sentencias/for...in", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Instructions/for_each...in", "ja": "ja/Core_JavaScript_1.5_Reference/Statements/for_each...in", "en": "en/JavaScript/Reference/Statements/for_each...in" } ) }}

修订版来源

<p>{{ non-standard_header() }}</p>
<h3 name="Summary">概述</h3>
<p>使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行.</p>
<p><strong>注意:</strong> <code>for each...in</code> 是 <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" title="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMA-357 (E4X)</a> 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分.</p>
<table class="standard-table"> <tbody> <tr> <td class="header" colspan="2">Statement</td> </tr> <tr> <td>Implemented in:</td> <td><a href="/zh-cn/JavaScript/New_in_JavaScript/1.6" title="zh-cn/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a></td> </tr> <tr> <td>ECMA Version:</td> <td>none</td> </tr> </tbody>
</table>
<h3 name="Syntax">语法</h3>
<pre class="eval">for each (<em>variable</em> in <em>object</em>)
  <em>statement</em>
</pre>
<h3 name="Parameters">参数</h3>
<dl> <dt><code>variable</code></dt> <dd>用来遍历属性值的变量, 前面的 <code>var</code> 关键字是可选的. 改变量是函数的局部变量而不是语句块的局部变量.</dd>
</dl>
<dl> <dt><code>object</code></dt> <dd>该对象的属性值会被遍历</dd>
</dl>
<dl> <dt><code>statement</code></dt> <dd>遍历属性值时执行的语句. 如果想要执行多条语句, 请用(<code>{ ... }</code>) 将多条语句括住.</dd>
</dl>
<h3 name="Description">描述</h3>
<p>一些对象中的内置属性无法被遍历到,包括所有的内置方法,例如String对象的<code>indexOf</code>方法. 不过, 所有的用户自定义属性都是可遍历的.</p>
<h3 name="Examples">例子</h3>
<p><strong>警告:</strong> for each...in只能用在遍历对象上,不要用它来遍历数组,<a href="/zh-cn/JavaScript/Reference/Statements/for...in#Description" title="zh-cn/JavaScript/Reference/Statements/for...in#Description">详细</a>.</p>
<p>下面的代码片段演示如何遍历一个对象的属性值, 并计算它们的和:</p>
<pre class="eval">var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8
</pre>
<h3 name="See_also">相关链接</h3>
<ul> <li><a href="/zh-cn/JavaScript/Reference/Statements/for...of" title="zh-cn/JavaScript/Reference/Statements/for...of">for...of</a> - 一个相似的语法,遍历对象的属性值</li> <li><a href="/zh-cn/JavaScript/Reference/Statements/for...in" title="zh-cn/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a> - 一个相似的语法,遍历对象的属性名称</li> <li><a href="/zh-cn/JavaScript/Reference/Statements/for" title="zh-cn/Core_JavaScript_1.5_Reference/Statements/for">for</a></li> <li><a href="/zh-cn/JavaScript/Guide/Obsolete_Pages/Working_with_Arrays#Array_comprehensions" title="zh-cn/Core_JavaScript_1.5_Guide/Working_with_Arrays#Array_comprehensions">Array comprehensions</a> (使用<code>for each</code>)</li>
</ul>
<p> </p>
<p>{{ languages( { "es":"es/Referencia_de_JavaScript_1.5/Sentencias/for...in", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Instructions/for_each...in", "ja": "ja/Core_JavaScript_1.5_Reference/Statements/for_each...in", "en": "en/JavaScript/Reference/Statements/for_each...in" } ) }}</p>
恢复到这个版本