关于JavaScript for.in表示法的说明

Clarification about the JavaScript for..in notation

本文关键字:说明 表示 in JavaScript for 关于      更新时间:2023-09-26

这里的x是数字吗?它的使用方式与下面的person[x]部分类似。这是怎么回事,我太迷了:

var person={fname:"John",lname:"Doe",age:25}; 
var x;
for (x in person)
{
document.write(person[x] + " ");
}

我很感激任何提示或建议。

否,x不是数字。只有当您在Array上迭代时才会出现这种情况,在这种情况下,x将是元素的数字索引。在这种情况下,它将是一个字符串,因为JavaScript对象实际上是关联数组(由字符串索引)。它将是对象中每个字段的名称:

for (var x in person) {
    document.write(x + ' = ' + person[x]);
}

应输出:

fname = John
lname = Doe
age = 25

忘记for (key in obj)。这里引用一位著名的教育家:

每个人都知道应该迭代对象的键,而不是对象本身。

因此,迭代对象的正确方法是:

var keys = Object.keys(obj); // array of keys 
for (var i = 0, len = keys.length; i < len; i += 1) {
    var item = obj[keys[i]];
    /* ... */
}

对于。。。in迭代对象的可枚举属性。我建议阅读上的MDN页面。。。有关详细信息,请参阅。

Adel您必须了解基本的数据结构。

`

1> 在上面的代码片段中,"person"不是数组,而是字典或哈希表(这就是为什么x不是数字)。它们是键:值对的数组。看见http://en.wikipedia.org/wiki/Associative_array

2> "Dictionaries/Associative arrays"在键上迭代。因此代码for(x in person)将为您提供键数组,而不是我们在数组迭代中期望的数字开关。请尝试for(x in person){console.log(x);}