let 和 const的骚操作

69 阅读2分钟

1. let 和 const 命令

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 例如: `{ let a = 10; var b = 1; }

a // ReferenceError: a is not defined. b // 1

2. let 用于for循环最美滋滋

var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 上面使用var声明变量,为何输出的结果与预期不一样呢?原因是变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。 解决办法就是: var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6 上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。

3. let声明变量不会出现变量提升

例如: console.log(foo); // 输出undefined console.log(bar); // 报错ReferenceError

var foo = 2; let bar = 2;

4.暂时性死区

在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区” 在使用时,变量一定要先使用let声明再使用,否则就容易gg。

5. 不允许重复声明

使用let声明变量时不可以重复声明变量,不然就会报错,不会像var一样覆盖前一个变量,所以记住了哦。

6.const命令

const声明一个只读的常量。一旦声明,常量的值就不能改变。 例如: const PI = 3.1415; PI // 3.1415

PI = 3; // TypeError: Assignment to constant variable. 所以如果想要声明一个只读的常量可以使用const,如果想要后期更改变量的话就是用let,够骚

7.学习时间

2021.06.14 早上

8.学习小结

在使用es6时一直有用这两个命令来声明变量,但是没有真正去理解使用它们的缘由以及它们的故事,现在查看一些资料后,比以前懂得更多,上面只是一小部分,剩余的还在我的脑海里哈哈哈哈哈