Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于。。。环的_Javascript_For Loop - Fatal编程技术网

Javascript 用于。。。环的

Javascript 用于。。。环的,javascript,for-loop,Javascript,For Loop,在MDN中 它说,for…in迭代属性名,for…of迭代属性值 那么,为什么第二个for…of没有记录“hello” for…in语句以任意顺序迭代对象的可枚举属性 更准确地说,这也包括原型链中的可枚举属性 每个物体都被同等对待。它很简单,令人困惑,当它被用于阵列时,很多人都讨厌它 for..of在内部使用符号。任何具有[Symbol.iterator]的对象都可以通过for..of进行迭代,但是迭代的内容和顺序是在符号中定义的,而不是通过语句本身的语义(允许初始属性未知的惰性迭代器) 对于数

在MDN中

它说,
for…in
迭代属性名,
for…of
迭代属性值

那么,为什么第二个
for…of
没有记录“hello”

for…in语句以任意顺序迭代对象的可枚举属性

更准确地说,这也包括原型链中的可枚举属性

每个物体都被同等对待。它很简单,令人困惑,当它被用于阵列时,很多人都讨厌它

for..of
在内部使用符号。任何具有
[Symbol.iterator]
的对象都可以通过
for..of
进行迭代,但是迭代的内容和顺序是在符号中定义的,而不是通过语句本身的语义(允许初始属性未知的惰性迭代器)


对于数组,迭代器将遍历介于0和数组的
length-1
之间的每个属性,即使是未定义且
for..In
无法提取的属性。但是它完全忽略了其他属性,就像Array.toString()从一开始就忽略的那样,以及Array.forEach()及其来自ES5的朋友。这使得数组迭代保持一致。

对数组的迭代(使用forEach,
for..of
)只覆盖其介于零和
长度-1之间的属性(即使未定义)
for..in
是不同的,它会迭代任何可枚举属性。非常感谢您的及时回复。现在,我不知道如何接受你的答案:-)抱歉,写得更详细一点,给我几分钟:)非常感谢你的回答,我希望其他遇到同样问题的人也能从中受益:-)事实上,这是我今天写的第二个与..in array
相关的答案。数组用于编号、有序的值。也就是说,arr.foo=“hello”应该用作对象中的键值对
let arr = [3, 5, 7];
arr.foo = "hello";

for (let i in arr) {
   console.log(i); // logs "0", "1", "2", "foo"
}

for (let i of arr) {
   console.log(i); // logs "3", "5", "7"
}