yisainan / web-interview

我是齐丶先丶森,收集整理全网面试题及面试技巧,旨在帮助前端工程师们找到一份好工作!更多详见公众号「前端面试秘籍」
MIT License
2.61k stars 507 forks source link

[选择题] 56.(单选题)下面代码的输出是什么 #1034

Open qiilee opened 4 years ago

qiilee commented 4 years ago
const myLifeSummedUp = ["a", "b", "c", "d"];

for (let item in myLifeSummedUp) {
  console.log(item);
}

for (let item of myLifeSummedUp) {
  console.log(item);
}
A:0 1 2 3 and 'a' 'b' 'c' 'd'
B: 'a' 'b' 'c' 'd' and 'a' 'b' 'c' 'd'
C: 0 1 2 3 and 0 1 2 3
D: 0 1 2 3 and {0:'a',1:'b',2:'c',3:'d'}

答案:A

解析:

通过 for-in 循环,我们可以遍历一个对象自有的、继承的、可枚举的、非 symbol 的属性。在数组中,可枚举属性是数组元素的键,即它们的索引。类似于下面的这个对象:

{0:'a',1:'b',2:'c',3:'d'}

其中键则是可枚举属性,因此 0,1,2,3 被记录。通过 for-of 循环,我们可以迭代可迭代对象(包括 Array,Map,Set,String,arguments 等)。当我们迭代数组时,在每次迭代中,不同属性的值将被分配给变量 item,因此'a' 'b' 'c' 'd'被打印