x这是一个数字吗?它在下面的person[x]
部分中使用。这是如何工作的,我迷失了它:
var person={fname:"John",lname:"Doe",age:25};
var x;
for (x in person)
{
document.write(person[x] + " ");
}
我感谢任何提示或建议。
答案 0 :(得分:3)
不,x
不是数字。只有在迭代Array
时才会出现这种情况,在这种情况下x
将是元素的数字索引。在这种情况下,它将是一个字符串,因为JavaScript对象实际上是关联数组(由字符串索引)。它将是对象中每个字段的名称:
for (var x in person) {
document.write(x + ' = ' + person[x]);
}
应输出:
fname = John
lname = Doe
age = 25
答案 1 :(得分:2)
忘掉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]];
/* ... */
}
答案 2 :(得分:1)
For ...迭代对象的可枚举属性。我建议您阅读MDN page on for...in以获取更多详细信息。
答案 3 :(得分:1)
Adel你必须了解基本的数据结构。
`
1&GT;在上面的代码片段中,“person”不是数组,它是字典或散列表(这就是为什么x不是数字)。它们是键数组:值对。参见http://en.wikipedia.org/wiki/Associative_array
2&gt;“字典/关联数组”在键上迭代。
因此,代码for(x in person)
将为您提供键数组,而不是数组迭代中我们期望的数字。for(x in person){console.log(x);}