为什么空数组在 javascript 的 "for in " 循环中被初始化而没有赋值?
Why empty array is getting initialized during the "for in " loop of javascript without assignment?
var a=[],i=0,o={x:1,y:2,z:3}
for(a[i++] in o);
console.log(a);
Mozilla 开发人员控制台中的输出:Array [ "x", "y" ]
我希望数组为空,因为循环从不迭代。但它是用 'x' 和 'y' 初始化的。
合理的解释是什么?
the loop never iterates
是的,确实如此。
for(key in o);
表示 每个键作为对象 o
的 key
因此循环使用 3 个值 "x"
、"y"
和 "z"
.
迭代 3 次
然后是技巧,您可以使用语法 for(a[i++] in o);
.
将这些值分配到数组中
for...in 语句迭代对象的所有可枚举属性,这些属性由字符串作为键。
for (variable in object) {
statement
}
variable
A different property name is assigned to the variable on each iteration.
object
Object whose non-Symbol enumerable properties are iterated over.
var a=[],i=0,o={x:1,y:2,z:3}
for(a[i++] in o);
console.log(a);
Mozilla 开发人员控制台中的输出:Array [ "x", "y" ]
我希望数组为空,因为循环从不迭代。但它是用 'x' 和 'y' 初始化的。
合理的解释是什么?
the loop never iterates
是的,确实如此。
for(key in o);
表示 每个键作为对象 o
key
因此循环使用 3 个值 "x"
、"y"
和 "z"
.
然后是技巧,您可以使用语法 for(a[i++] in o);
.
for...in 语句迭代对象的所有可枚举属性,这些属性由字符串作为键。
for (variable in object) {
statement
}
variable A different property name is assigned to the variable on each iteration.
object Object whose non-Symbol enumerable properties are iterated over.