let和var的区别

  • 通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
  • 但是直接用let声明变量不赋值是会打印undefined,还是初始化了,只是let声明放在赋值之后,let声明会提前但不会初始化
  • let a; alert(a);//值为undefined alert b;//会报错 let b
  • let不允许在相同作用域内,重复声明同一个变量。
  • 只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的,尽管代码块外也存在相同全局变量。
  • let : 变量只能声明一次
  • var : 变量可以多次声明
    for(var i=0;i<5;i++){
               setTimeout(function(){
                   console.log("var:" + i);
              })
        }
           // let
        for(let i=0;i<5;i++){
               setTimeout(function(){
                   console.log("let" + i);
              })
        }

     

posted @ 2018-09-03 12:00  木之龙  阅读(148)  评论(0)    收藏  举报