ES6 let和const的区别
let和const命令
基本用法
跟var
的用法类似,都是用于定义变量,但是与var
不同的是:let
声明的变量仅在定义的区域起作用。如果你在IDE中使用let
关键字必须先声明再使用,否则会直接报错无法通过ESLint编译。
1 |
|
这有什么好处?
由于let
声明的变量不会被覆盖,因此很适合在迭代器中做指针,看看下面这两段程序的结果会怎么样?
使用var
做循环指针:每次迭代过程中指针i
的值都会被覆盖
1 |
|
使用let
做循环指针:每次迭代过程中指针i
的值都会指向当前值
1 |
|
暂时性死区(Temporary Dead Zone)
只要块级作用域内存在let
关键字,那么所声明的变量就与作用域牢牢地绑定在了一块。
1 |
|
块级作用域
ES6中规定在块级作用域定义的变量只在所在块内才有效。块级可以嵌套。内层和外层可以定义同名的变量;
1 |
|
DO表达式
将块级作用域转换为表达式,这样就可以取到返回值,使用如下:如果不使用do表达式那么块内变量t在外层将无法取到;
1 |
|
冻结对象
使用const
关键字定义的变量跟let
一样需要先定义再使用。但是常量并不意味着变量不能修改。看看下面的程序。
1 |
|
如果需要冻结一个对象,可以使用Object.freeze(obj)
,除了冻结对象,还需要冻结其属性。代码如下:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!