javascript函数参数中的命名冗余

naming redundancy in javascript function parameters

本文关键字:冗余 函数 参数 javascript      更新时间:2023-09-26

如何设置定时参数的默认值?

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中编写更少的冗余代码?

参数和其他变量一样是一个(局部)变量。

timing = timing || 1000;

你可以在你的函数中添加一个check,

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

JSFiddle

阅读材料

typeof

MDN -默认参数

在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调用,您可以使用功能强大的||操作符:

function active_timer(timing){
    interval = setInterval(function(){
        console.log('interval');
    }, timing || 1000); // Only if you know timing won't be 0
}

如果a || b 为true,则a的值为true;如果a 为false,则b的值为false。假值为0""undefinednullNaN,当然还有false

您可以使用ES2015的默认参数和箭头函数:

function activeTimer(timing = 1000) {
    setInterval( () => {
        console.log('interval:' + timing);
    }, timing);
}
activeTimer();

参见小提琴