ES6-let和var区别

2022-06-22  本文已影响0人  div式人格

1.变量的声明

ES6 新增了 let 命令,用来声明变量。它的用法类似于 var,但是所声明的变量,只在 let 命令所在的代码块内有效。

1. 变量名不能重复
    var a = 0;
    let a = 1;  // 报错 --- 标识符 'a' 已经声明
    console.log(a);
2. 块级作用域
    // 对象:
     {
         var a = 1;
         let b = 2;
     }
     console.log(a);  // a = 1    
     console.log(b);  // 报错 --- b is not defined
  
    // 在 js 中函数创造局部环境 
    for (var i = 0; i < 10; i++) {
        var a = i;
    }
    console.log(i);     // 10
    console.log(a);     // 9

    // es6 中 用 let 在 for 中声明的变量 ,无法在外部访问。
    for (let i = 0; i < 10; i++) {
        let a = i;
    }
    console.log(i);     // i is not defined
    console.log(a);     // i is not defined
3. let 声明的变量只能在当前作用域使用
    let a = 0;  // 全局作用域
    {
        // console.log(a);   // 报错 --- 在初始化之前无法访问'a'  应该先声明后使用。
        let a = 1;           // 局部作用域
        console.log(a);      //  1
        {
            let a = 2;        // 局部作用域
            console.log(a);   // 2
        }
    }
    console.log(a);  // 0
4. 暂时性死区
    {
        console.log(a);   // 报错 --- 在初始化之前无法访问'a'     应该先声明后使用。
        let a = 1;        // 局部作用域
        console.log(a);   // 1

2. const

1.const关键字
    const PI = 3.1415926;
    console.log(PI);
    PI = 0; 
    console.log(PI);    // 报错 --- 常量无法修改,  对常数变量的赋值。
    const ABC;
    console.log(ABC);   // 报错 --- 在const声明中缺少初始化格       
2. const 在作用域特性上与 let 完全一致

3. 总结:

相同点:
1. const 的作用域与 let 命令相同:只在声明所在的块级作用域内有效。
2. const 与 let 都 没有提升和污染(变量 / 常量)。
3. const 与 let 都 存在暂时性死区。
4. const 与 let 都 只能在声明的位置后面使用。
5. const 与 let 都 不可重复声明。

区别:
let => 变量:值可以改变。
const => 常量: 一旦声明,变量值不可更改。

上一篇 下一篇

猜你喜欢

热点阅读