es6

ES6

变量的声明

ES6有六种声明变量的方式:var,function,let,const,import,class; 从ES6开始全局变量将逐步与顶层对象的属性脱钩。

变量的解构赋值:

按照一定模式,从数组和对象中提取值,对变量进行赋值,称为解构

数组的解构
成功解构
let [a, b, c] = [1, 2, 3];

解构成功:只要等号两边的模式相同,左边的变量就会被赋予对应的值,解构不成功:变量的值就等于undefined ;不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功

解构不成功
let [bar, foo] = [1];
//bar = 1,foo = undefined
不完全解构
let [a, [b], d] = [1, [2, 3], 4];
//a=1,b=2,d=4

等号的右边必须是数组(可遍历的结构),否则会报错

解构赋值允许指定默认值,会先判断等号右边对应的值是否是undefined,如果是取默认值,不是取该值(注意null!=undefined)

let [x = 1] = [undefined];
//x=1

默认值可以引用解构赋值的其他变量,但该变量必须已经声明

let [x = y, y = 1] = [];     // ReferenceError
//y没有声明
对象的解构
let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"

对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值 对象的赋值与顺序无关,与对象的键对应,无序的,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量 其他和数组一样 解构赋值的规则是只要等号右边的值不是对象和数组,就先将其转化为对象(undefined和null没有对象)

字符串扩展方法

> codePointAt()
JSRUN notes