一、函数参数结构:
一、function m1({x = 0, y = 0} = {}){...}
二、function m2({x, y} = { x: 0, y: 0 }) {...}
方法一可理解为:
1、如果没有给函数传参,则用空的{}代替,然后 x和y的默认值各为0;
2、如果传了参则不会用空的{}代替。
1)、如果实参的key 与形参的key一一对应,那么实参的值会替换掉形参的默认值
2)、如果实参的key 与形参的key不一一对应,只会替换掉对应位置的值,不对应的位置仍然用形参的默认值(0)。
方法二可理解为:
1、如果没有给函数传参,则用{ x: 0, y: 0 }代替,然后 x和y的默认值各为0;
2、如果传了参则不会用空的{}代替。
1)、如果实参的key 与形参的key一一对应,那么实参的值会替换掉形参的默认值
2)、如果实参的key 与形参的key不一一对应,只会替换掉对应位置的值,不对应的位置仍然用形参的默认值(undefined)。
二、rest 形参
function foo(...values) {
console.log(values);
}
foo(1,2,3,4,5,6); // [1,2,3,4,5,6]
其中 ...values 就是rest 方式的形参,表示该函数可以接受任意多个实参,并会自动将其转换成数组形式
四、扩展运算符 ...
即 rest参数的逆运算
let a = [1,2,3,4,5,6];
console.log(...a); // 1 2 3 4 5 6
五、箭头函数
由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上
括号
,否则会报错。
let getTempItem = id => ({ id: id, name: "Temp" });
#等同于:
var getTempItem = function(id) {
return {
id: id,
name: "Temp",
};
}