我在剧本的顶部看到了很多但是我不完全确定它意味着什么,有人可以解释一下吗?
var whatevername = whatevername || {};
答案 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),则会得到一个空对象。