let const | 青训营笔记

35 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

今天主要是学的JS,JS主要是ES6以后的部分比较重要,今天就谈一个比较简单的let、const、var。也是老生常谈了

let

  1. 不允许重复声明

  2. 不存在变量提升 var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined

  3. 暂时性死区。只要块级作用域内存在let命令,它所声明的变量就绑定这个区域,不再受外部的影响。这个主要是能洗掉链上的属性,比如一些变量在外部let了,在块里面又let一次,感觉像是怎么都有一个能用,但却会报ReferenceError

    var tmp = 123;
    if (true) {
      tmp = 'abc'; // ReferenceError
      let tmp;
    }
    

    上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

    “暂时性死区”也意味着typeof不再是一个百分之百安全的操作。

  4. 块级作用域

    有一个场景就是for循环里面打印i,尤其是settimeout以后再打印,问你打印结果是什么。如果是var的话,每一轮都会var一个新的来覆盖,那肯定打印最后一次的。而let每次迭代声明一个独立变量实例,就会一个数打印一次

const

基本与let一致,除了:

  1. 声明必须赋初始值
  2. 值不允许修改

var、let、const的使用

基本上,不要使用var了。不变量用const,会变的量用let最好

ES6 声明变量的六种方法

ES5 只有两种声明变量的方法:var命令和function命令。

ES6 除了添加letconst命令,另外还有两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法。