关于javascript:varlet的区别

5次阅读

共计 864 个字符,预计需要花费 3 分钟才能阅读完成。

  1. var申明晋升
    console.log(name)  // 土豆
    var name = '土豆';

    应用 var 申明的变量会主动晋升到函数作用域的顶部

    function foo(){console.log(name);
        var name = "土豆";
    }
    foo()  //undefined
    
    // 等价于
    
    function foo(){
        var name;
        console.log(name);
        name = "土豆";
    }
    foo(); //undefined
    console.log(name)  //ReferenceError name 没有被定义
    let name ="土豆";

    而应用 let 定义的 name 不会被晋升,报出 ReferenceError 的谬误;

  2. var能够反复申明同一个变量
    var name = "番茄";
    var name = "西瓜";
    var name = "土豆";
    console.log(name);// 土豆

    而应用 let 反复申明同一个变量会报错。

    var name = "土豆";
    let name = "土豆";
    console.log(name);//'name' has already been declared
    let name = "土豆";
    var name = "土豆";
    
    console.log(name);//Cannot redeclare block-scoped variable 'name'.
  1. var全局申明
    var name = "土豆";
    console.log(window.name);// 土豆
    
    let age = "24";
    console.log(window.age);  //undefined

    应用 var 定义的变量会被挂载到 window 上,成为 window 对象的属性,而应用 let 不会。

  2. 作用域
    if(true){
        var name = "土豆";
        console.log(name);
    }
    console.log(name);
    // 土豆
    // 土豆
    
    if(true){
        let age = 24;
        console.log(age);
    }
    console.log(age);
    //24
    //undefined

    应用 var 申明的范畴是函数作用域,应用 let 申明的范畴是块作用域。

正文完
 0