Javascript在循环中设置回调

时间:2014-07-14 10:21:18

标签: javascript node.js

我不知道js引擎如何处理下面两个脚本之间的区别:

var a = [];
for (i = 0 ; i< 10 ; i++ ){
  var temp = {};
  var k = i;
  temp.test = function (){
    return k;
  }
  a.push(temp); 
}

for (i = 0 ; i<10 ;i++ ){
  console.log(a[i].test());
}

输出

999999999

var a = [];
for (i = 0 ; i< 10 ; i++ ){
  var temp = {};

  temp.test = function (){
    var k = i;  //<--------------------- this line is moved
    return k;
  }
  a.push(temp); 
}

for (i = 0 ; i<10 ;i++ ){
  console.log(a[i].test());
}

输出 123456789

输出来自node.js

中的脚本

有时甚至奇怪: 如果脚本在chrome中运行,则输出为: 999999999

我认为chrome和node.js都使用V8引擎,为什么不同?

0 个答案:

没有答案