ES6的新增语法
let
ES6中新增的用于声明变量的关键字
- let声明的变量只在所处于的块及有效
if (true) {
let a=19;
}
console.log(a); //a is not defined
- 不存在变量提升
console.log(a);
let a = 2
- 暂时性死区
var tmp = 123;
if (true) {
tmp = 'abc';
let = tmp;
}
const
声明变量,常量就是值(内存地址)不能变化的量。
- 具有块级作用域
if (true) {
const a = 10;
}
console.log(a); // a is not defined
- 声明变量时必须赋值
const a //Missing initializer in const declaration 报错
- 常量赋值后,值不能修改。
const PI = 3.14;
PI = 100; //Assignment to constant variable
const arr = [100,200];
arr[0] = "a";
arr[1] = "b";
console.log(arr);//["a","b"]
arr = ["a","b"]; //Assignment to constant variable
let const var 的区别
- 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
- 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
- 使用const声明的变量,在后面出现的代码中不能在修改常量的值。
var | let | const |
---|---|---|
函数级作用域 | 块级作用域 | 块级作用域 |
变量提升 | 不存在变量提升 | 不存在变量提升 |
值可以更改 | 值可以更改 | 值不可以更改 |