JavaScript教程:var和let的相同点、不同点

相同点

  • 在函数外定义变量,都是全局的
  • 在函数内定义变量,都是函数级的

不同点

作用域

  • 在 {} 代码块中定义变量,var 是函数作用域,let 是块作用域
function test(){

    for(var i = 0; i<10;i++){

    }
    // C/C++/JAVA 开发语言,由于是在for语句中定义的变量i
    // 所以在for的后面是不能访问变量i的
    // 但是在js可以,原因是:var 定义的变量,作用域在整个函数中
    console.log("i:",i)

}
test()

直接在for中定义,是全局变量

<script>
    for ( var a = 0 ;a<5;a++){

    }
    console.log("window:",window)

</script>

访问变量

  • var 定义的变量可以 定义变量之前,先访问变量

    // 在这里可以使用 name 变量
    console.log(name)
    var name;
    
  • let 定义的变量必须 先声明,后使用

    // 下面代码执行报错
    console.log(name)
    let name;
    

重复声明变量

  • var 可以重复声明变量

    //下面代码正常运行
    var i = 1;
    var i = true;
    console.log(i)
    
  • let 不能重复声明变量

    //下面代码报错
    let i = 1;
    let i = true;
    console.log(i)
    

原文出处:/show_1IX3mKxqBPLG.html