2

我在脚本的顶部看到了很多,但我不完全确定这意味着什么,谁能解释一下?

var whatevername = whatevername || {};
4

4 回答 4

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为真,则运算符将返回值 ofhasAnEmailAddress而不是hasAPhoneNumber。如果不正确,hasAPhoneNumber则返回第二个参数的值。

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

于 2013-04-02T16:46:04.000 回答
2

如果尚未初始化whatevername,则使用空对象进行初始化。whatevername

等效代码

if(!whatevername) whatevername  = {}
于 2013-04-02T16:47:19.360 回答
2

在许多语言中,您会看到使用三元运算符完成此操作,我认为这很清楚发生了什么。例子:

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

在 Javascript 中,如果 || 运算符的计算结果为真,它不会像预期的那样返回布尔值,而是返回最后一次计算的操作数的值。因此,如果whatevername为null,它将返回一个新对象,否则将返回whatevername。Ruby 也这样做,只是举出这种行为的另一个例子。

于 2013-04-02T16:50:19.013 回答
1

这是一个默认值声明。||是 OR 的符号,您可能知道。

该语句读取“将whatevername设置为whatevername或一个空对象”。OR 将选择读取为真值(非空,非假)的两个对象中的第一个。如果设置了whatevername,您将得到whatevername。如果不是(或者如果设置为 null),您将得到一个空对象。

于 2013-04-02T16:47:03.553 回答