es6 (1

61 阅读1分钟

let const

1.var会先声明变量而let不会

2.let不允许重复声明相同名字的变量

3.let存在块级作用域,作用域外不可使用且可以重复定义

4.let存在暂时性死区

const为常量 除了具有let的所有特性外,不允许修改,且在声明后就需要赋值

变量解构赋值

格式:

  1. 数组
let [a, b, c] = [1, 2, 3];
//a等于1b等于2,c等于3
let [a, ...c]=[1,2,3];
//a等于1,...c等于[2,3]

等号两边结构类似时,会给对应位置的变量赋值

  1. 对象
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };

对象变量同名时才能够正确赋值,否则值会等于undefined

  1. 默认值
var {x = 3} = {};
x // 3

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

var {x: y = 3} = {};
y // 3

var {x: y = 3} = {x: 5};
y // 5

var { message: msg = 'Something went wrong' } = {};
msg // "Something went wrong"

当对象的值严格等于undefined时生效(赋值为null则不会变为默认值)

  1. 字符串
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

字符串被解构时会被看做数组

  1. 函数
function add([x, y]){
  return x + y;
}

add([1, 2]); // 3

在传入参数时,函数会被解构成对应的变量