新版语法 - let是更好的var

  • 作者:KK

  • 发表日期:2018.10.12


要点速读

  1. 你新写的代码都可以只用let不用var了。

  2. let 声明的变量作用域更细,比如 if/for/while/switch 的let声明也只能在这些逻辑块里用。

  3. 现在你下载第三方模块的代码会发现全世界都已经在用 let 而不用 var,坑少嘛。


正文

let完全可以取代var,它更加严谨,解决了var带来的陷阱

  1. 不能重复声明:

    var a = 1;
    var a = 2; //不报错
    
    let b = 1;
    let b = 2; //报错,说你已经定义过了变量
    

  2. 作用域更细,出了 if 或出了 for 等这些都没用了

    if(111){
    	let a = 1;
    }
    console.log(a); //报错,说a未定义,除非你在if上面就先定义好
    
    for(var key in obj){
    	var a = 1;
    }
    console.log(key, a); //正常
    	
    //for(var i = 0; i <= arr.length; i++){
    for(let key in obj){
    	let a = 2
    }
    console.log(key, a); //报错说变量未定义,因为离开了 for 就没它们什么事了,那个 i 也一样
    

    那 while/switch 这些就不废话了。


旧浏览器识别不了怎么办

搜一下babel这东西,能把你新语法写的代码自动转换成旧语法,webpack 等构建工具都能配置起来实现自动转换。