for...in/for...of
程序员文章站
2024-03-25 14:35:22
...
昨天晚上又失眠了,偶然看到segmentfault上的一个js题目:
var scores = [10,11,12];
var total = 0;
for(var score in scores){
total += score;
}
var mean = total/scores.length;
console.log(mean);
刚开始一看觉得答案是 1 …
结果一看答案,发现了自己平时没注意到的一点:
for in 循环是循环对象的索引属性,key是一个字符串.
所以 分析一波:
1.for in循环 遍历的key值是字符串
2.total进行了字符串拼接,结果是’0012’
3.total/scores.length ,先把字符串转换成数字12,结果为4
这个示例是来自《编写高质量JavaScript的68个方法》的第49条:数组迭代要优先使用for循环而不是for in循环。
在ES6中,可以用for-of循环语句通过方法调用来遍历各种集合.
var scores = [10,11,12];
var total = 0;
for(var score of scores){
total += score;
}
var mean = total/scores.length;
console.log(mean);
输出为11
参考文献:
https://segmentfault.com/a/1190000008823431
http://www.infoq.com/cn/articles/es6-in-depth-iterators-and-the-for-of-loop
上一篇: js中for循环变量作用域
下一篇: js中for循环作用域的问题(变量提升)