函数参数默认值

112 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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]