这在javascript中是如何工作的

这在javascript中是如何工作的,javascript,Javascript,在上述语法中,如果temp不存在,则创建temp,否则它将引用已创建的变量。只是我很好奇这是怎么回事。我认为,若temp存在,但它正在创建一个对象,那个么表达式的右侧应该返回true。这是如何工作的。任何解释都会有帮助。a | | b使用逻辑OR运算符,该运算符计算a,如果a为真,则计算结果为a。否则,将返回b 如果temp尚未声明,var-temp在temp=”“中使用时已“已”声明了它(变量声明在JavaScript中是函数范围内的)。如果已经申报,没有问题;重新声明在JavaScript中

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

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

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

“Truthy”在这里的意思是“不是falsy”。JavaScript中错误的东西:

  • false
  • 0
    (就此而言,
    -0
  • NaN
  • null
  • 未定义

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

您使用的是表达式
|
(OR),因此它是一个布尔表达式。由于
temp
之前未声明,并且它是
未定义的
,因此此端将为“false”,返回值为另一端


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

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

var temp = temp || {};
请参阅上的逻辑OR
|
运算符。基本上,在
expr1 | | expr2
中,如果
expr1
是真实的,则返回它,否则返回
expr2
if (typeof temp === 'undefined') {
// temp is undefined
//create variable temp
// your code here
}
else{
//temp exists
//your code here
}