美文网首页
es6新特性-局部变量let

es6新特性-局部变量let

作者: yfmei | 来源:发表于2018-06-10 14:51 被阅读0次

    局部变量 let

    • 以前在js中, 所有的变量都是全局变量, 经常会出现变量同名, 导致局部变量覆盖全局变量的值, 发生意想不到情况. 所以es6定义了新的局部变量类型: let

    let 和 var 比较

    作用域

    • var定义的变量全局都可以访问
    • let定义的变量只在{}内能够访问
    // 定义全局变量和局部变量
    var a = 1;
    var localVar = function (){
        console.log(" a in localVar is: " + a);
        let b = 1;
        console.log(" b in localVar is: " + b);
    }
    
    // 打印到控制台
    console.log("global a is: " + a);
    console.log("local b is: " + b); // 报错 b is not defined
    

    默认值

    • 用var定义的全局变量默认值为undefined
    • 用let定义的局部变量在定义前使用会报错 is not defined
    // 打印到控制台
    console.log("global a is: " + a); // global a is : undefined
    console.log("local b is: " + b); // 报错 b is not defined
    
    // 定义全局变量和局部变量
    var a = 1;
    var localVar = function (){
        let b = 1;
        console.log(" b in localVar is: " + b);
    }
    

    同名变量

    • 用var定义的同名局部变量会覆盖全局变量的值
    var a = 1;
    
    function test(){
        var a = 2;
        console.log("a in test is: " + a); // a变成2了
    }
    console.log("a in global is: " + a); // 这里还是1
    
    • 因为用let重新定了a, 即使有一个同名的全局变量a, 在重新用let定义之前,
      也会报错: a is not defined
    var a = 1;
    function testLet(){
        // console.log("a is: " + a); // a is not defined
        let a = 3;
        console.log("a is: " + a); // a is: 3
    }
    
    

    相关文章

      网友评论

          本文标题:es6新特性-局部变量let

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