如何设置计时参数的默认值?
function active_timer(timing){
interval = setInterval(function(){
console.log('interval');
}, timing);
}
我可以这样做
function active_timer(timing){
var time = 1000;
if(timing){
time = timing
}
interval = setInterval(function(){
console.log('interval');
}, time);
}
我的问题是命名,时间和时间实际上是一回事,我怎样才能在javascript中编写更少的冗余代码?
答案 0 :(得分:1)
您可以在功能中添加支票,
if (typeof timing == 'undefined')
timing = defaultValue;
timing = (typeof timing == 'undefined') ? defaultValue : timing;
或
timing = timing || defaultValue
示例typeof
function x(y)
{
if (typeof y == 'undefined')
y = 5;
return y;
}
alert(x()); // 5
alert(x(25)); // 25
阅读材料
答案 1 :(得分:1)
参数是一个(本地)变量,就像任何其他变量一样。
timing = timing || 1000;
您可以在世界范围内无需小心地覆盖它。
答案 2 :(得分:1)
在ES2015(又名“ES6”)及更高版本中,您可以为参数指定默认值:
// ES2015+
function active_timer(timing = 1000) {
// -------------------------^^^^^^^
interval = setInterval(function(){
console.log('interval');
}, timing);
}
在ES5及更早版本中 (从技术上讲,所有这些也适用于ES2015 +):您可以为函数参数赋值,因此您不需要单独的变量,除非你想要一个。如果在没有任何参数的情况下调用active_timer
,则timing
将具有值undefined
。
您可以选择如何确定是否需要应用默认值:
if (timing === undefined) {
timing = 1000;
}
或
if (typeof timing === "undefined") {
timing = 1000;
}
或
if (arguments.length === 0) { // NOT RECOMMENDED
timing = 1000;
}
(不推荐使用,因为在函数中使用arguments
会影响其性能。)
或者,如果您知道永远不会使用active_timer
调用0
,则可以使用curiously-powerful ||
operator:
function active_timer(timing){
interval = setInterval(function(){
console.log('interval');
}, timing || 1000); // Only if you know timing won't be 0
}
a || b
的结果是a
的值,如果它是 truthy ,或者b
的值,如果a
是 falsy 。虚假值为0
,""
,undefined
,null
,NaN
,当然还有false
。
答案 3 :(得分:0)
您可以使用ES2015的default parameter和arrow function:
function activeTimer(timing = 1000) {
setInterval( () => {
console.log('interval:' + timing);
}, timing);
}
activeTimer();
另请参阅fiddle。