方法中的默认变量? [复制]

Posted

技术标签:

【中文标题】方法中的默认变量? [复制]【英文标题】:Default vars in a method? [duplicate] 【发布时间】:2014-04-24 07:55:27 【问题描述】:

这是我的方法:

p.show = function(message, status, timer)

    //do stuff
;

有没有办法,如果没有传入诸如 timer 之类的变量,可以为它们设置一个默认值,例如 true。

php 中我会这样做:

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

【问题讨论】:

请看一下这个答案:***.com/questions/894860/…它对你有用吗? @hjpotter92 | 是位运算符...这与|| 逻辑或完全不同。 【参考方案1】:
p.show = function(message, status, timer)
    timer = (timer !== undefined && timer !== null) ? timer : 60;
;

【讨论】:

如果timer 为零怎么办? 你是对的,这个问题对于计时器值的范围并不是很具体。请参阅编辑。谢谢@Niet【参考方案2】:

是的,逻辑等效是测试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
;

【讨论】:

很好的答案,谢谢!【参考方案3】:

没有。这必须手动完成:

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

如果您的函数不期望虚假值,您也可以这样做:

timer = timer || true;
// this is commonly seen in event handlers as e = e || window.event;

【讨论】:

以上是关于方法中的默认变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C# 中类和变量的默认访问修饰符? [复制]

java学习之堆与栈的区别

如何为javascript函数变量添加默认值? [复制]

声明既没有默认构造函数也没有复制构造函数的成员变量

MSBuild + Visual Studio:为解决方案中的所有项目自定义默认“复制本地”

JAVA中的成员变量不赋值默认是0吗?