当我编写依赖于从同一页面引用的另一个脚本文件创建的对象的代码时,我经常发现自己必须测试一些全局变量或其他变量的存在。
我希望这样做的逻辑成语如下:
if (window.myLibrary) myLibrary.someFunction();
然而,在对 stackoverflow 进行一些研究之后,共识似乎是正确的成语是这样的:
if (typeof myLibrary != "undefined") myLibrary.someFunction();
这个成语在stackoverflow的几个答案中给出,最突出的例子是这个:
但是,我找不到任何解释为什么第二个版本更可取。对它的所有建议都采用“仅使用它”的形式。有人可以解释为什么使用 typeof 运算符优于通过将其作为窗口对象的属性来检查对象吗?