js函数参数默认值

以前的写法,利用短路原则来写:

function haosy(name,age){
    name=name||'小郝';
    age=age||21;
    alert('读者你好,我是作者'+name+',芳龄'+age+'岁。');
}
调用:
情况一:
haosy('王八蛋',20)   输出:读者你好,我是作者王八蛋,芳龄20岁。
情况二:
haosy('王八蛋')      输出:读者你好,我是作者王八蛋,芳龄21岁。
情况三:
haosy(null,22)      输出:读者你好,我是作者小郝,芳龄22岁。
情况四:
haosy();            输出:读者你好,我是作者小郝,芳龄21岁。

现在我们使用ES6给出的默认值写法。

1.基本用法

function haosy(name='小郝',age=21){
    console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
}

haosy();                 输出:读者你好,我是作者小郝,芳龄21岁。
haosy('王八蛋',20);       输出:读者你好,我是作者王八蛋,芳龄20岁。
haosy('王八蛋')           输出:读者你好,我是作者王八蛋,芳龄21岁。
//TODO...

2.与解构赋值默认值结合

function haosy({name,age=21}){
     console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
}

haosy({});                       输出:读者你好,我是作者小郝,芳龄21岁。
haosy({name:'王八蛋'});           输出:读者你好,我是作者王八蛋,芳龄21岁。
haosy({name:'王八蛋',age:20});    输出:读者你好,我是作者王八蛋,芳龄20岁。
//TODO...

与基本用法的区别:

优点:这种写法在传入多个形参时可以不按顺序写,会方便;

缺点:如果不传入参数的时候,每次都要 haosy({}) 要写 {} 比较麻烦,因此,我们可以再设置一次默认值。

3.双重默认值

function haosy({name='小郝',age=21}={}){
   console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
}

haosy();                         输出:读者你好,我是作者小郝,芳龄21岁。
haosy({name:'王八蛋'});           输出:读者你好,我是作者王八蛋,芳龄21岁。
haosy({name:'王八蛋',age:20});    输出:读者你好,我是作者王八蛋,芳龄20岁。

 


posted on 2023-01-29 09:37  ChoZ  阅读(658)  评论(0编辑  收藏  举报

导航