2
var temp = temp || {};

在上面的语法中,如果 temp 不存在,则创建它,否则它将引用已经创建的变量。只是我很好奇这是如何工作的。我认为如果 temp 存在但它正在创建一个对象,则表达式的右侧应该返回 true。这是如何运作的。任何解释都会有所帮助。

4

3 回答 3

5

a || b使用逻辑 OR 运算符,它计算a,如果a是真的,它计算为a。否则,b返回。

如果temp尚未声明,var temp则在使用它时“已经”声明了它temp = ""(变量声明在 JavaScript 中是函数范围的)。如果已经声明,没问题;重新声明在 JavaScript 中有效,并且不会影响变量的现有值。

“真”在这里的意思是“不假”。JavaScript 中的错误之处:

  • false
  • 0-0就此而言)
  • NaN
  • ""
  • null
  • undefined
于 2013-09-01T03:05:24.967 回答
2

由于您声明 temp 并在表达式的另一侧使用它,它的值是未定义的,因此,例如,如果您说var temp = temp;您将看到它temp是未定义的。

您正在使用表达式||(OR),因此它是一个布尔表达式。由于temp之前没有声明,所以undefined这一边将是“假的”,返回的是另一边。

它的简化版本var temp = (temp == undefined || temp == false) ? {} : temp;

于 2013-09-01T03:20:22.070 回答
0

您可以使用以下方法检查变量是否存在于 javascript 中:

if (typeof temp === 'undefined') {
// temp is undefined
//create variable temp
// your code here
}
else{
//temp exists
//your code here
}
于 2013-09-01T04:43:42.837 回答