解释这个全局命名空间的声明

时间:2013-04-02 16:45:04

标签: javascript jquery

我在剧本的顶部看到了很多但是我不完全确定它意味着什么,有人可以解释一下吗?

var whatevername = whatevername || {};

4 个答案:

答案 0 :(得分:3)

它使用OR运算符来设置默认值。如果已设置whatevername,则将使用它,否则将使用新的空对象。

一个例子:

function sayHi(options){
    options = options || {};
    if (options.useAlert){
        alert("hi");
    } else {
        console.log("hi");
    }
}

在这种情况下,您始终可以使用options参数,即使它未传递给函数:

sayHi(); 
sayHi({"useAlert": true});

在第一种情况下,将使用{},并且将定义options.useAlert。在if语句中,它与设置为false相同,console.log将用于打印。

OR运算符通常使用如下:

  

if(hasAnEmailAddress || hasAPhoneNumber){contactPerson()}

如果hasAnEmailAddress为真,则运算符将返回hasAnEmailAddress而不是hasAPhoneNumber的值。如果不是,则返回第二个参数hasAPhoneNumber的值。

设置默认值时使用该逻辑:如果第一个参数为falsy,则返回第二个参数 - 即使它不是布尔值。

答案 1 :(得分:2)

如果whatevername尚未初始化,则会使用空对象初始化whatevername

等效代码

if(!whatevername) whatevername  = {}

答案 2 :(得分:2)

在很多语言中,你会看到这是用三元运算符完成的,我认为它非常清楚发生了什么。例如:

var whatevername = (whatevername != NULL) ? whatevername : {};

在Javascript中,如果是||运算符求值为truthy,它不会返回一个人们可能期望的布尔值,而是返回上次计算的操作数的值。因此,如果whatevername为null,它将返回一个新对象,否则它将返回whatevername。 Ruby也是这样做的,只是为了说明这种行为的另一个例子。

答案 3 :(得分:1)

这是默认值语句。 ||是OR的符号,正如您可能知道的那样。

声明中写着“将whatevername设置为whatevername或空对象”。 OR将选择读取到truthy值的两个对象中的第一个(不是空的,不是假的)。如果设置了whatevername,你将获得whatevername。如果不是(或者如果设置为null),则会得到一个空对象。