这是如何在JavaScript中工作的

时间:2013-09-01 03:00:19

标签: javascript

var temp = temp || {};

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

3 个答案:

答案 0 :(得分:5)

a || b使用逻辑OR运算符,该运算符评估a,如果a真实,则评估为a。否则,将返回b

如果尚未声明temp,则var temptemp = ""中使用时已经“已经”声明它(变量声明在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
}