第三章
1.var {foo:baz} = {foo:"aaa", bar:"bbb"} //bas = bbb, foo = undefined
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者
2.嵌套赋值的例子,平时开发经常会用到
let obj = {};
let arr = [];
({foo:obj.prop, bar:arr[0]}) = {foo:123, bar:true};
obj //{prop:123}
arr //[true]
3.只要等号右边的值不是对象,就先将其转为对象。
let {toString:s} = 123;
s === Number.prototype.toString //true
let {toString:s} = true
s === Boolean.prototype.toString //true
4. 交换变量
es6 :[x, y] = [y, x];
想到一种es5的写法 x = [y, y = x][0]
第五章
1.正则表达式的 y修饰符,y修饰符隐含了头部匹配的标志
var s = "aaa_aa_a";
var r1 = /a+/g;
var r2 = /a+/y;
r1.exec(s) //["aaa"]
r2.exec(s) //["aaa"]
r1.exec(s) //["aa"]
r2.exec(s) //null
var s = "aaa_aa_a";
var r = /a+_/y //换一下表达式
r.exec(s) //["aaa_"]
r.exec(s) //["aa_"]
第七章
1.Array.from() 作用是把类数组的对象转化为真正的数组, 适用于(arguments对象,NodeList,Iterable对象,Set,Map)
let arr = {'0':'a', '1':'b', '2':c, length:3};
ES5:
var arr1 = [].slice.call(arr);
ES6
let arr2 = Array.from(arr);
2.Array.includes()
[1,2,3].includes(2) //true 方法属于es7
3.数组推导,可以在[]内用循环创建数组
var years = [1,2,3,4,5,6,7];
[for (year of years) if(year>3)] //[4,5,6,7]
第八章
1.
function m1({x = 0, y = 0}){
return [x, y];
}
function m2({x, y} = {x:0, y:0}){
return [x,y];
}