区别:if((typeof OA!='undefined')&& OA)和if(OA)

时间:2012-04-17 17:07:43

标签: javascript

if((typeof OA != 'undefined') && OA )if(OA)之间有什么区别?

前一种说法有效;后者悄然停止执行当前功能。

(也许是菜鸟问题)

谢谢!

3 个答案:

答案 0 :(得分:4)

如果从未定义if(OA)

OA将失败。 typeof OA != 'undefined'检查是否定义了OA

var OA;
if(OA){
}

这很有效。

if(OA){
}

这不起作用:OA is not defined

typeof OA != 'undefined' && OA在尝试访问变量

之前检查它是否已定义

答案 1 :(得分:0)

编译器不会尝试在类型的情况下评估OA,而在其中尝试评估if(OA)

答案 2 :(得分:0)

if ((typeof OA != 'undefined') && OA)

这将首先检查变量OA是否已定义。如果是,则将其转换为布尔值并进行评估。

if(OA)

这假设存在OA并立即将其强制转换为布尔值并对其进行评估。

如果从未声明变量OA,第二个示例将抛出一个javascript异常 - 第一个例子避免了这个。

有关javascript中undefined的多重含义的详细说明,请参阅my answer here

相关问题