繁体   English   中英

在 JavaScript 中设置默认值的惯用方法

[英]Idiomatic way to set default value in JavaScript

在 JavaScript 中执行以下操作的最惯用的方法是什么:

如果调用者未将myParam传递给MyFunc ,那么我想将其设置为默认值。 但首先我想尝试从另一个可能不存在的对象中获取它:

function MyFunc(myParam) {

    if (!myParam) {
        if (!myObj) {
            myParam = 10;
        }
        else {
            myParam = myObj.myParam;
        }
    }
 
    alert(myParam);
}

我开始写:

myParam = myParam || myObj.mParam || 10

但意识到如果myObj不存在那么这将失败。 我可能猜到以下几点:

myParam = myParam || (myObj && myObj.mParam) || 10

它甚至可能起作用。 但这是最好的方法吗?

例如,John Resig 会怎么做?

如果 myObj 是一个全局变量,它需要引用 window 对象,否则如果myObj未定义,它将抛出一个错误。

myParam = myParam || (window.myObj ? window.myObj.mParam : 10);

或者

myParam = myParam || (window.myObj && window.myObj.mParam) || 10;

这也有效:

myParam = myParam || ((typeof myObj !== "undefined") ? myObj.mParam : 10);

我认为其他答案已经证明,单线可能在这里失败的方式有很多。 我下面的版本可能更具可读性,并且没有明确测试对象/属性的存在,但也不会更短:

function MyFunc(myParam){
    if (!myParam){
        try{
            myParam = myObj.myParam;
        }
        catch(e){
            myParam = 10;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM