JS困惑之var和let

未完,待续,还需要积累
参考资料:

  1. let
  2. let和var

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[0](); // 10
a[1](); // 10
a[6](); // 10
a[9](); // 10

以上代码的原意是想把不同的打印i值的函数保存在对应的数组a[i]中,但是结果却是所有的ai结果都是10;看到这个结果,我要疯了,这么简单的一个程序还会出错!!!
别急我们来细想一下:
a[i]中保存的到底是什么东西?

a[0];
a[9];
// function () {
//   console.log(i);
//}

从结果可以看出,a[i]中保存的是函数引用

你可能感兴趣的:(JS困惑之var和let)