为什么console.log(a[6])结果是f(){console.log(i)}

为什么console.log(a[6])结果是f(){console.log(i)} ,而不是f(){console.log(6)}

 var a = [];
    for (var i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); //10
    console.log(a[6]); //  function(){console.log(i)} 
阅读 2.1k
3 个回答

因为赋值给a[6]的时候没有eval函数体,所以就没有eval i,没有eval i,就不会是log(6),而是log(i).

你不是赋值为一个函数吗?那log打印出函数体不是很正常吗?

这里的 i 只是一个变量啊,就像

let a = 1
let b = a

console.log(b) 不会输出 a 一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏