为什么这样做有效:
FOO = window.FOO || {isFoo: true};
但这不是:
FOO = FOO || {isFoo: true};
由于FOO和window.FOO都引用相同的东西(两者都在全局范围内运行)。
答案 0 :(得分:4)
因为未声明FOO
,但window
是。{1}}。尝试访问未声明的变量将抛出ReferenceError
,但访问未定义的属性则不会。
您可以使用typeof
:
FOO = typeof FOO != 'undefined' ? FOO : {isFoo: true};