let与const关键字

95 阅读2分钟

ES6新推出的 let与const 这两个方法与之前的 var 有什么区别

以前声明变量一直使用的 var 关键字来声明变量

在 ES6 的时候多了两个关键字 let / const 也是用来声明变量

语法:

    let 变量名;   const 变量名
    
    let a = 100 // 通过 let 关键字 定义一个变量 a, 并赋值为 100
    const b = 200   // 通过 const 关键字 定义一个变量 b, 并赋值为 200
    var c = 300
和 var 的区别
  1. let 和 const 不允许重复声明变量

     var a = 100
     var a = 999
     console.log(a)
     let b = 100
     let b = 100
     const c = 100
     const c = 100
    
  2. let 和 const 声明变量的时候不会出现变量提升

     console.log(a)  // undefined
     var a = 100
     console.log(a)  // 100
     console.log(b)
     let b = 100
     console.log(b)  // 100
     console.log(c)
     const c = 100
     console.log(c)  // 100
    
  3. let 和 const 声明的变量会被所有的代码块 {} 限制作用范围

     if (true) {
         var a = 100
         let b = 200
         const c = 300
     }
     console.log(a)  
     console.log(b)  
     console.log(c)  
    
let 与 const 的区别
  1. let 声明的变量的值可以改变, const 声明的变量的值不可以被改变, 所以我们也把 const 声明的变量叫做 "常量"

     let a = 100
     a = 'QF001'
     console.log(a)  // QF001
     const b = 200
     b = 'QF666'
     console.log(b)
    
  2. let 定义的变量 可以不赋值, 但是 const 定义的变量必须赋值

     let a;
     a = 'QF999'
     console.log(a)  // QF999
    
     const b;
     console.log(b)
    
变量提升:

在定义变量前去使用这个变量时, 如果是通过 var 这个关键字定义的变量, 那么就会出现变量提升

也就是说能用这个变量, 但是没有实际的值, 得到的值为 undefined

但是如果是通过 let 或者 const 定义的变量 则不会出现变量提升, 也就是说在定义前使用变量, 浏览器会报错