ES6入门 let&const

209 阅读2分钟
原文链接: xixitoday.com

ES6为我们提供两种新的定义变量的形式letconst。在 ES6普及之前,我们最常使用 var。

对比var、let、const

var

  1. ES5中只有函数级别的作用域。使用 var 声明变量会存在各种问题。

    
                                                            
    for (var i = 0; i < 10; i ++) {
        console.log(i);
    }
    console.warn(i === 10);//true
    
                                                        

    ES5的作用域给程序员造成了很多的麻烦,首先是变量名的定义变得复杂,其次优秀的coder 为了缩小作用范围常常使用立即执行函数来模拟块级作用域,代码变得难以理解,冗长。

    
                                                            
    (function () {
        for (var i = 0; i < 10; i ++) {
            console.log(i);
        }
    })();
    console.warn(i); //Uncaught ReferenceError: i is not defined
    
                                                        
  2. var可以重复声明同一变量

    
                                                            
    var demo = 'demo';
    var demo = 'redefined demo';
    console.log(demo);//redefined demo
    
                                                        
  3. 变量声明提升

    
                                                            
    console.log(demo);//undefined
    var demo = 'demo';
    
                                                        

let

  1. let 存在块级作用域中, 看一下使用 let 的 for 循环

    
                                                            
    for (let i = 0; i < 10; i ++) {
        console.log(i);
    }
    console.log(i);//Uncaught ReferenceError: i is not defined at <anonymous>:4:13
    
                                                        
  2. let 不能重复声明变量

    
                                                            
    let demo01 = 'demo';
    let demo01 = 'redefined demo';//Uncaught SyntaxError: Identifier 'demo01' has already been declared
    
                                                        
  3. let 定义的变量不存在变量提升

    
                                                            
    console.log(demo4hosited);//VM304:1 Uncaught ReferenceError: demo4hosited is not defined
    let demo4hosited = 'demo4hosited';
    
                                                        

const

const 可以理解为 let 的升级版同样具备上述的三个特性。const 用来声明 不可变的变量。


                                                
const KEY_NUM = 'ddddddddddddd';
KEY_NUM = '123';//VM794:2 Uncaught TypeError: Assignment to constant variable.若更改 const 的变量的值会报错

                                            

const和 let 的优点

最大的优点就是为 js 引入了块级作用域,使得编码变的简洁。

那你可能会疑问什么时候用 let 什么时候使用 const,个人的原则是能用 const 的地方就不用 let🤗。其实 coding 发展到今天,我们应该意识到程序是给人读的而不是给机器读的。当变量不可变时就使用 const,变量可变时就使用 let 声明。做到见名知意,看到 const 定义的变量,自然地想这个变量是 read-only 的,别人不会去更改它的值,同时我也不要更改它。