ES6语法总结

107 阅读1分钟

一、let const

1、不存在变量提升

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
//=>
var foo;
console.log(foo);
foo = 2;
// let 的情况 不会变量提升,还是之前的代码
console.log(bar); // 报错ReferenceError
let bar = 2;

总结:let const所声明的变量一定要在声明后使用,否则报错。

2、暂时性死区 (简称 TDZ)

var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}
if (true) {
  // TDZ开始
  tmp = 'abc'; // ReferenceError
  console.log(tmp); // ReferenceError

  let tmp; // TDZ结束
  console.log(tmp); // undefined

  tmp = 123;
  console.log(tmp); // 123
}

总结:只要块级作用域内存在let命令,在代码块内,使用let命令声明变量之前,该变量都是不可用的,不再受外部的影响。

3、不允许重复声明

let不允许在相同作用域内,重复声明同一个变量。

4、块级作用域

5、const

const声明一个只读的常量,一旦声明,常量的值就不能改变。

二、变量的解构赋值

1、数组

let [a, b, c] = [1, 2, 3];
a //1
b //2

允许指定默认值

let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'

2、对象

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"

允许指定默认值

var {x, y = 5} = {x: 1};
x // 1
y // 5

3、字符串

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"