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 的区别
-
let 和 const 不允许重复声明变量
var a = 100 var a = 999 console.log(a) let b = 100 let b = 100 const c = 100 const c = 100 -
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 -
let 和 const 声明的变量会被所有的代码块 {} 限制作用范围
if (true) { var a = 100 let b = 200 const c = 300 } console.log(a) console.log(b) console.log(c)
let 与 const 的区别
-
let 声明的变量的值可以改变, const 声明的变量的值不可以被改变, 所以我们也把 const 声明的变量叫做 "常量"
let a = 100 a = 'QF001' console.log(a) // QF001 const b = 200 b = 'QF666' console.log(b) -
let 定义的变量 可以不赋值, 但是 const 定义的变量必须赋值
let a; a = 'QF999' console.log(a) // QF999 const b; console.log(b)
变量提升:
在定义变量前去使用这个变量时, 如果是通过 var 这个关键字定义的变量, 那么就会出现变量提升
也就是说能用这个变量, 但是没有实际的值, 得到的值为 undefined
但是如果是通过 let 或者 const 定义的变量 则不会出现变量提升, 也就是说在定义前使用变量, 浏览器会报错