Javascript in check vs dot notation check

Pab*_*mez 1 javascript variables object

根据这个答案,我知道我可以使用in运算符检查属性是否存在.所以我在很多代码中看到它常用,例如:

if ("gapi" in window) {
    gapi.login(...);
}
Run Code Online (Sandbox Code Playgroud)

但这样做会不会更好?

if (window.gapi) {
    gapi.login(...);
}
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一的区别是,如果变量存在,但它的价值是第二个将返回false undefined,false,0,null计算结果为假或其他价值; 并且第一个将返回true,对吗?

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

Dan*_*ite 6

是的,这是一个显着的差异.如果有什么gapi是falsy( ,0,false空字符串,null)?这将跳过块.