if((typeof OA != 'undefined') && OA )和if(OA)的区别是什么?
前一条语句起作用,后一条语句静默地停止当前函数的执行。
(也许是一个菜鸟问题)
谢谢!
发布于 2012-04-18 01:12:16
如果从未定义过OA,则if(OA)将失败。typeof OA != 'undefined'检查是否定义了OA。
var OA;
if(OA){
}这是可行的。
if(OA){
}这不起作用:OA is not defined。
typeof OA != 'undefined' && OA会在尝试访问变量之前检查是否定义了该变量
发布于 2012-04-18 01:12:34
编译器不会尝试在typeof of的情况下计算OA,因为它尝试在if(OA)中求值
发布于 2012-04-18 01:20:35
if ((typeof OA != 'undefined') && OA)这将首先检查是否定义了变量OA。如果是,则将其强制转换为布尔值并进行计算。
if(OA)这假设OA存在,并立即将其转换为布尔值并对其求值。
如果变量OA从未声明过,第二个示例将抛出一个javascript异常--第一个示例避免了这一点。
有关undefined在javascript中的多重含义的更多解释,请参见my answer here。
https://stackoverflow.com/questions/10195750
复制相似问题