我不知道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引擎,为什么不同?