使用var和let的区别

使用var不在乎作用域,

使用let只在当前作用域有效

  1 // 函数定义阶段
  2   // 1 - 开辟一个空间地址
  3   // 2 - 把函数体内所有的东西都当成 字符串 存储在这个空间内
  4   // 3 - 是把空间地址赋值给变量名
  5 
  6   // 函数执行阶段
  7   // 1 - 按照变量名的地址找到对应的函数空间
  8   // 2 - 形参赋值
  9   // 3 - 预解释
 10   // 4 - 代码从上倒下的执行
 11 
 12   // var arr = [];
 13   // for (var i = 0; i < 3; i++) {
 14   //     // console.log(arr[i]);
 15   //     // var item = arr[i];
 16   //     arr[i] = function(){
 17   //       console.log(i)
 18   //     };
 19   // }
 20   //
 21   // {
 22   //   var i = 3;
 23   //   function fn1 (){
 24   //     console.log(i)
 25   //   }
 26   //   arr[0] = fn1
 27   // }
 28   // {
 29   //   var i = 3;
 30   //   function fn2 (){
 31   //     console.log(i)
 32   //   }
 33   //   arr[1] = fn2
 34   // }
 35   // {
 36   //   var i = 3;
 37   //   function fn3 (){
 38   //     console.log(i)
 39   //   }
 40   //   arr[2] = fn3
 41   // }
 42   // var i = 3;
 43 
 44   // [
 45   //   fn1,
 46   //   fn2,
 47   //   fn3
 48   // ]
 49 
 50 
 51 
 52   // 这个位置 i = 3;
 53   // arr[2]();
 54   // arr[1]();
 55   // arr[0]();
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63   // var arr = [];
 64   // for (let i = 0; i < 3; i++) {
 65   //   // console.log(arr[i]);
 66   //   // var item = arr[i];
 67   //   arr[i] = function(){
 68   //     console.log(i)
 69   //   };
 70   // }
 71   //
 72   // {
 73   //   let i = 0;
 74   //   function fn1 (){
 75   //     console.log(i)
 76   //   }
 77   //   arr[0] = fn1
 78   // }
 79   // {
 80   //   let i = 1;
 81   //   function fn2 (){
 82   //     console.log(i)
 83   //   }
 84   //   arr[1] = fn2
 85   // }
 86   // {
 87   //   let i = 2;
 88   //   function fn3 (){
 89   //     console.log(i)
 90   //   }
 91   //   arr[2] = fn3
 92   // }
 93   // let i = 3;
 94 
 95   // [
 96   //   fn1,
 97   //   fn2,
 98   //   fn3
 99   // ]
100   // arr[0]();
101   // arr[1]();
102   // arr[2]();
原文地址:https://www.cnblogs.com/md-lw/p/8745030.html