let,const的区别

1、首先上两个经典的例子:

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

变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。

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

如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。

猜你喜欢

转载自blog.csdn.net/qq_26983555/article/details/82970130