let命令的语法

let命令的语法,第1张

1.基本用法 let的用法与var基本类似,但仅在其声明的代码块内作用
    {
        var a = 123;
        let b = 456;
    }
    console.log(a);
    console.log(b); //ReferenceError: b is not defined
同理,在循环语句里也可以体现
    for(var i = 0; i < 4; i++){
    }
    for(let j = 0; j < 5; j++){
    }
    console.log(i); //4
    console.log(j); //ReferenceError: j is not defined
2.不存在变量提升 可以理解为var的镜面效果。由let声明的变量不能在该变量声明之前使用,否则会报错。而由var声明的变量可以提前使用,但值为undefined。关于“什么是变量提升”可以查看上一篇文章。
    console.log(b);
    let b = 2;  //ReferenceError: Cannot access 'b' before initialization

    console.log(a); //undefined
    var a = 1;
3.暂时性死区 在一个代码块中,由let声明的变量,在其声明之前该变量是不能使用的。这个区块对这些let声明的变量,从一开始就形成了封闭作用域。而这个封闭作用域就是“暂时性死区(temporal dead zone,简称 TDZ)”
    if(true){
        //TDZ开始
        a = 1;  //ReferenceError: Cannot access 'a' before initialization
        console.log(a); //ReferenceError: Cannot access 'a' before initialization

        let a; //TDZ结束
        console.log(a); //undefined

        a = 2;
        console.log(a); //2
    }
4.不允许重复声明
    if(true){
        var a;  //SyntaxError: Identifier 'a' has already been declared
        let a;
    }
    if(true){
        let a;  //SyntaxError: Identifier 'a' has already been declared
        let a;
    }
    function fun(a){
        let a;  //SyntaxError: Identifier 'a' has already been declared
    }
    fun();

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/2990061.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-09-23
下一篇2022-09-23

发表评论

登录后才能评论

评论列表(0条)

    保存