Javascript in check vs dot notation check

时间:2016-05-10 23:31:34

标签: javascript variables object

基于this answer我知道我可以使用in运算符检查属性是否存在。所以我在很多代码中都看到了常用的东西,例如:

if ("gapi" in window) {
    gapi.login(...);
}

但这样做会不会更好?

if (window.gapi) {
    gapi.login(...);
}

我所知道的唯一区别是,如果变量存在,则第二个将返回false,但其值为undefinedfalse0null或其他评估为false的值;并且第一个将返回true,对吗?

那么,还有其他区别吗?我应该使用哪一个?

2 个答案:

答案 0 :(得分:6)

是的,这是一个显着的差异。如果gapi是假的(0false,空字符串,null),该怎么办?那将跳过这个区块。

答案 1 :(得分:2)

使用第一个。对于第二个,如果window.gapi恰好是0,false,'',null,undefined等,它将返回false。这意味着即使window.gapi存在,您的代码可能也不会认为它确实