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