ES6 函数的扩展

默认参数

  • 传统函数设置默认参数的方法

function sum (num1, num2) {
    num1 = num1 || 10;      // num1 默认值为10
    num2 = num2 || 8;       // num2 默认值为8
    console.log(num1 + num2);
}
sum(10, 10);        //20
sum();              //18
  • ES6中函数设置默认参数的方法
function person (name, age = 18) {
    console.log(name + '---' + age);
}
person('cez', 21);      //cez---21
person('cez', '');      //cez---   (第二个参数为空)
person('zlz');          //zlz---18 (没传递第二个参数,所以使用默认参数)

注意事项

  • 使用函数默认参数时,不允许有同名参数。

//不报错
function person (name, name) {
    console.log(name);
}
person('cezlz')             //undefined
person('cezlz', 21);        //21

//报错:Duplicate parameter name not allowed in this context (此上下文中不允许有重复的参数名)
function person (name, name, age=18) {
    console.log(name);
}
  • 只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。
function person (name, age = 18) {
    console.log(name + '---' + age);
}
person('cez', 21);      //cez---21
person('cez', '');      //cez---   (第二个参数为null,认为有效)
person('zlz');          //zlz---18 (没传递第二个参数,所以使用默认参数)
  • 函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。

function a (x, y = x) {
    console.log(x, y);
}
a(1);       //1 1
a()         //undefined undefined

function a (x = y) {
    console.log(x);
}
a(1);       //1
a();        //报错:y is not defined

function t (x = y, y) {
    console.log(x, y);
}
t();               //报错:Cannot access 'y' before initialization (初始化前无法访问“y”)
t(1);              //1 undefined

不定参数(延展操作符)

不定参数用来表示不确定参数个数,形如,...变量名,由...加上一个具名参数标识符组成。具名参数只能放在参数组的最后,并且有且只有一个不定参数

求数值类型的参数之和:
function sum (name, ...arg) {
    let result = 0;
    console.log(name);              //cezlz
    for (let value of arg) {
        result += value;
    }
    return result;
}
console.log(sum('cezlz', 1, 10, 3));         //14
console.log(sum('cezlz', 1, 10, 20, 30));    //61

传统函数求参数之和:
function sum () {
    let result = 0;
    for (let value of arguments) {
        result += value;
    }
    return result;
}
console.log(sum(1, 2, 3));          //6

 

 

请多多指教^__^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值