美文网首页
es6之 let、var 、const的区别

es6之 let、var 、const的区别

作者: JennyWeb | 来源:发表于2020-07-29 10:39 被阅读0次

    es6语法有很多新增,从最简单最常用的let const var的区别来说把!

    1、var 声明的变量会挂载至window上,let 和 const不会

    var a = 1;
    console.log(a,window.a);    // 1  1
    
    let b = 2;
    console.log(b,window.b);    // 2 undefined
    
    const c = 3;
    console.log(c,window.c);    // 3 undefined
    

    2、var声明变量存在变量提升,let和const不存在变量提升

    console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
    var a = 10;
    console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
    let b = 10;
    console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
    const c = 10;
    

    3、let和const声明形成块作用域

    if(1){
        var a = 1;
        let b = 10;或者const c = 20;
    }
    
    console.log(a); // 1
    console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
    console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量
    

    4、同一作用域下let和const不能声明同名变量,而var可以

    var a = 1;
    console.log(a); // 1
    var a = 10;
    console.log(a); // 10
    
    let a = 1;
    let a = 10;
    //  控制台报错:Identifier 'a' has already been declared   标识符a已经被声明了。
    

    5、let、const会暂存死区 (原因:1、全局变量和局部变量同时存在,局部变量优先。2、没有变量提升) var不会

    var a = 100;
        if(true){
          a = 90;
          let a = 99;
          console.log(a); // Cannot access 'a' before initialization 不能在初始化之前访问“a”
        }
    

    6、const

    • 1、一旦声明必须赋值,不能使用null占位。

    • 2、声明后不能再修改

    • 3、如果声明的是复合类型数据,可以修改其属性

    const list = [];
    list[0] = 'a';
    console.log(list);  // ['a']
    

    相关文章

      网友评论

          本文标题:es6之 let、var 、const的区别

          本文链接:https://www.haomeiwen.com/subject/kkfhrktx.html