方法中的默认值?

这个问题在这里已经有了答案:

  • 有没有更好的方法来在JavaScript中做可选的函数参数? 29个答案

  • 是的,逻辑上的等价物是测试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; timer = timer || 1000; 如果它有一个虚假值开始,它将设置定时器为1000 ,所以如果有人没有通过第三个参数,或者如果他们通过0 ,它仍然会被设置为1000 ,但是如果它们传递的真值为50或一个对象,它会保持这个值。

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

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

    不可以。这个必须手动完成:

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

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

    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;
    };
    
    链接地址: http://www.djcxy.com/p/17283.html

    上一篇: Default vars in a method?

    下一篇: JS if not a variable