为什么这个能够工作:
FOO = window.FOO || {isFoo: true};
但是这个不行:
FOO = FOO || {isFoo: true};
因为FOO和window.FOO引用的是相同的东西(两者都在全局作用域中运行)。
为什么这个能够工作:
FOO = window.FOO || {isFoo: true};
FOO = FOO || {isFoo: true};
因为FOO和window.FOO引用的是相同的东西(两者都在全局作用域中运行)。
由于FOO
未被声明,但是window
已经声明。试图访问未声明的变量会抛出ReferenceError
,但是访问未定义的属性不会。
您可以通过使用typeof
来避免这个问题:
FOO = typeof FOO != 'undefined' ? FOO : {isFoo: true};