在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是全局的,它需要引用窗口对象,否则如果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;
        }
    }
}
链接地址: http://www.djcxy.com/p/17005.html

上一篇: Idiomatic way to set default value in javascript

下一篇: What is TypeScript and why would I use it in place of JavaScript?