美文网首页
JavaScript的一些思考,关于一道 in关键词的题

JavaScript的一些思考,关于一道 in关键词的题

作者: 剑来___ | 来源:发表于2017-09-14 23:14 被阅读16次

  先看题

https://segmentfault.com/a/1190000008823431

var scores = [10,11,12];
var total = 0;

for(var score in scores){
  total += score;
}

var mean = total/scores.length;
console.log(mean);

  你以为答案是11?错!是 4!
  引用的文章上面指出,这是因为 >for in 循环循环的值永远是key, key是一个字符串。所以total的值是:'0012'。它是一个字符串,字符串'0012'/3,0012会被转换成12,然后除以3,结果是4。


一些思考

  数组迭代,优先使用for循环,而不是 for in

  • for in 循环是循环对象的索引属性,key是一个字符串。
  • 数值类型和字符串相加,会自动转换为字符串
  • 字符串除以数值类型,会先把字符串转为数值,最终结果为数值
    如果要循环这个数组的话,(比如是arr[]),要这么使用: arr[key],或者说,老老实实用for循环。。。。代码结构清晰才是最好的。可读性至上。

相关文章

网友评论

      本文标题:JavaScript的一些思考,关于一道 in关键词的题

      本文链接:https://www.haomeiwen.com/subject/mgpjsxtx.html