方法中的默认变量

Default vars in a method?

本文关键字:变量 默认 方法      更新时间:2023-09-26

这是我的方法:

p.show = function(message, status, timer){
    //do stuff
};

是否有一种方法,可以让像timer这样的变量没有传入时,为它们设置一个默认值,例如true。

在php中,我将这样做:

private function show(message, status, timer = true){
}

是的,逻辑上等价的是测试arguments类数组对象的长度:

p.show = function(message, status, timer){
    if (arguments.length < 3 )
        timer = 1000; // default value
    //do stuff
};

如果您想将其设置为默认值,即使它是手动传入的,但undefined传入的值,您也可以使用:

p.show = function(message, status, timer){
    if (timer === undefined)
        timer = 1000;
    //do stuff
};

一个更常见的方法是使用timer = timer || 1000;,如果它有一个假的值开始,将定时器设置为1000,所以如果有人传递没有第三个参数,或者如果他们传递0,它仍然将被设置为1000,但如果他们传递一个真值,如50或一个对象,它将保持该值。

在Javascript (ES6)的未来版本中,你将能够像在PHP中那样使用默认参数:

p.show = function(message, status, timer = 1000){
    //do stuff
};

No。这必须手动完成:

p.show = function(message, status, timer) {
    if( timer === undefined) timer = true;
}

如果你的函数不期望false值,你也可以这样做:

timer = timer || true;
// this is commonly seen in event handlers as e = e || window.event;
p.show = function(message, status, timer){
    timer = (timer !== undefined && timer !== null) ? timer : 60;
};