发表于: 2018-07-02 20:49:30
1 320
今天完成的事情:完成复盘评审,看了一波ES6的内容
明天计划的事情:开始方案涉及
遇到的问题:暂无
收获:
关于解构赋值:
1 数组的话会按照对应位置,为数组的变量进行赋值;而对象,则是根据对象的名字来进行赋值;只要等号右边的值不是对象或者数组,那就先将其转为对象,而由于undefined和null无法转为对象,所以对他们进行解构赋值都会报错
2 解构赋值允许指定默认值,但是假如还进行赋值,那么后面的值会覆盖默认值,例如
let [x, y=2] = [1, 3]; // x=1, y=3;
3 默认值可以引用解构赋值的其他变量,前提是该变量已经声明,例如
let [x=1, y=x] = [1, 2]; // x=1, y=2;
4 对象的解构赋值,关于模式和变量
分号前面都是模式,分号后面是具体的变量
5 函数的参数变量是默认声明的,所以不能用let或者const再次声明
function foo (x = 5){
let x = 1; // error
const x = 2; // error
}
使用参数默认值时,函数不能有同名参数
6 当函数的参数是一个对象时,变量才会通过解构赋值生成,如果调用函数时候没有传入参数,那么变量就不会生成,从而报错;而一旦提供了函数的参数的默认值,就可以避免这种情况
function foo ({x, y = 5} = { }){
console.log(x, y);
}
foo (); // undefined 5
如果没有提供参数,那么函数foo的参数就是默认的空对象
7 ES6引入rest参数,写作...变量名,用于获取函数的多余参数
function add (...values){
let sum = 0;
for (var val of values){
sum += val;
}
return sum;
}
add(2, 3, 5); // 10
评论