开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
来几个例子
初始化参数,没有传值时默认值为undefined
function test(a, b) {
console.log(a);
console.log(b);
}
test(1)
当test()没有传任何实参值时,我们也想要默认值,我们采取这样的方法
function test(a = 1, b = 2) {
console.log(a);
console.log(b);
}
test()
//当b没有赋值只,打印也是undefined
参数默认值的暂时性死区
//函数的参数还可以将前面参数的值,作为后面参数的默认值
function add(a, b = c){
return a + b;
}
console.log(add(1)); // 2
上面的代码将a传入的值当作了b参数的默认值,也就是调用add()方法只需要传递一个参数就可以了。但是反过来将后面的参数作为前面参数的默认值就不行
function add(a = b, c){
return a + b;
}
console.log(add(undefined, 1)); // 报错
//上面代码将b参数的值作为a的默认参数就会报错,是因为出发了暂时性死区,当b赋值给a的时候,b还没有进行定义,所以报错。
剩余参数 (剩余参数语法允许我们将一个不定数量的参数表示为一个数组)
- 使用剩余参数替代arguments获取实际参数
- 剩余参数永远是个数组,即使没有值,也是空数组
- 剩余参数的位置:剩余参数只能是最后一个参数,之后不能再有其他参数,否则会报错
语法
function (a, b, ...args) {
//函数体
}
例子
//剩余参数与解构赋值结合使用,注意:剩余参数(元素)必须是最后一个
const [a,...num] = [1,2,3]
console.log(a,num); // 1,[2,3]
//数组解构赋值与剩余参数
const fn = ([num,...args])=>{}
fn([1,2,3])
//对象解构赋值与剩余参数
const {x,y,...z} = {a:0,x:1,b:9,y:3}
console.log(x,y,z) //1,3,[a:0,b:9]