var temp = temp || {};
在上面的语法中,如果temp尚未存在,则创建temp,否则它将引用已创建的变量。我很好奇这是如何工作的。我认为如果temp存在但是它正在创建一个对象,那么表达式的右侧应该返回true。这是如何运作的。任何解释都会有所帮助。
答案 0 :(得分:5)
a || b
使用逻辑OR运算符,该运算符评估a
,如果a
真实,则评估为a
。否则,将返回b
。
如果尚未声明temp
,则var temp
在temp = ""
中使用时已经“已经”声明它(变量声明在JavaScript中是函数范围的)。如果 已经声明,没问题;重新声明在JavaScript中有效,并且不会影响变量的现有值。
“Truthy”在这里的意思是“不是假的”。在JavaScript中有点麻烦的东西:
false
0
(以及此-0
)NaN
""
null
undefined
答案 1 :(得分:2)
由于您声明了temp并在表达式的另一侧使用它,因此它的值是未定义的,因此,例如,如果您说var temp = temp;
,您将看到temp
未定义。
您正在使用表达式||
(OR),因此它是一个布尔表达式。由于temp
之前没有声明undefined
,因此var temp = (temp == undefined || temp == false) ? {} : temp;
此方将为“假”,而返回则为另一方。
其简化版本为{{1}}
答案 2 :(得分:0)
您可以使用以下方法检查javascript中是否存在该变量:
if (typeof temp === 'undefined') {
// temp is undefined
//create variable temp
// your code here
}
else{
//temp exists
//your code here
}