基于this answer我知道我可以使用in运算符检查属性是否存在。所以我在很多代码中都看到了常用的东西,例如:
if ("gapi" in window) {
gapi.login(...);
}
但这样做会不会更好?
if (window.gapi) {
gapi.login(...);
}
我所知道的唯一区别是,如果变量存在,则第二个将返回false,但其值为undefined
,false
,0
,null
或其他评估为false的值;并且第一个将返回true,对吗?
那么,还有其他区别吗?我应该使用哪一个?
答案 0 :(得分:6)
是的,这是一个显着的差异。如果gapi
是假的(0
,false
,空字符串,null
),该怎么办?那将跳过这个区块。
答案 1 :(得分:2)
使用第一个。对于第二个,如果window.gapi恰好是0,false,'',null,undefined等,它将返回false。这意味着即使window.gapi存在,您的代码可能也不会认为它确实