方法中的默认变量? [复制]
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;
【讨论】:
以上是关于方法中的默认变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章