我在脚本的顶部看到了很多,但我不完全确定这意味着什么,谁能解释一下?
var whatevername = whatevername || {};
它使用 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
则返回第二个参数的值。
设置默认值时使用该逻辑:如果第一个参数是假的,则返回第二个参数 - 即使它不是布尔值。
如果尚未初始化whatevername
,则使用空对象进行初始化。whatevername
等效代码
if(!whatevername) whatevername = {}
在许多语言中,您会看到使用三元运算符完成此操作,我认为这很清楚发生了什么。例子:
var whatevername = (whatevername != NULL) ? whatevername : {};
在 Javascript 中,如果 || 运算符的计算结果为真,它不会像预期的那样返回布尔值,而是返回最后一次计算的操作数的值。因此,如果whatevername为null,它将返回一个新对象,否则将返回whatevername。Ruby 也这样做,只是举出这种行为的另一个例子。
这是一个默认值声明。||
是 OR 的符号,您可能知道。
该语句读取“将whatevername设置为whatevername或一个空对象”。OR 将选择读取为真值(非空,非假)的两个对象中的第一个。如果设置了whatevername,您将得到whatevername。如果不是(或者如果设置为 null),您将得到一个空对象。