首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if((typeof OA != 'undefined') && OA )和if(OA)之间的区别

if((typeof OA != 'undefined') && OA )和if(OA)之间的区别
EN

Stack Overflow用户
提问于 2012-04-18 01:07:43
回答 3查看 198关注 0票数 3

if((typeof OA != 'undefined') && OA )if(OA)的区别是什么?

前一条语句起作用,后一条语句静默地停止当前函数的执行。

(也许是一个菜鸟问题)

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-04-18 01:12:16

如果从未定义过OA,则if(OA)将失败。typeof OA != 'undefined'检查是否定义了OA

代码语言:javascript
复制
var OA;
if(OA){
}

这是可行的。

代码语言:javascript
复制
if(OA){
}

这不起作用:OA is not defined

typeof OA != 'undefined' && OA会在尝试访问变量之前检查是否定义了该变量

票数 4
EN

Stack Overflow用户

发布于 2012-04-18 01:12:34

编译器不会尝试在typeof of的情况下计算OA,因为它尝试在if(OA)中求值

票数 0
EN

Stack Overflow用户

发布于 2012-04-18 01:20:35

代码语言:javascript
复制
if ((typeof OA != 'undefined') && OA)

这将首先检查是否定义了变量OA。如果是,则将其强制转换为布尔值并进行计算。

代码语言:javascript
复制
if(OA)

这假设OA存在,并立即将其转换为布尔值并对其求值。

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

有关undefined在javascript中的多重含义的更多解释,请参见my answer here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10195750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档