嘿伙计我在Internet Explorer中遇到此声明的问题, 我想知道是否有更好的方法来做到这一点?
var NEWVARIABLE = NEWVARIABLE || {};
NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
它给了我NEWVARIABLE
不存在的错误
答案 0 :(得分:3)
您不能使用(或测试)未定义的变量。我原本以为这是你用以下陈述做的事情
var NEWVARIABLE = NEWVARIABLE || {};
然而,感谢Fabrício,我意识到var声明被提升(移动到脚本标记的顶部,因此在它到达语句时已经被声明。
测试变量是否使用typeof === 'undefined'
来查看变量是否存在的不那么令人困惑的方法
var NEWVARIABLE;
if (typeof NEWVARIABLE === 'undefined') {
NEWVARIABLE = {};
}
在检查属性时可以使用相同的样式,不必对属性使用typeof
测试,即使未定义属性,也可以测试它们。
答案 1 :(得分:0)
您已接受答案,但其中包含误导性陈述:
您不能使用(或测试)未定义的变量。这就是你正在做的事情
声明了变量,所以它不是你正在做的。
在OP中,代码:
> var NEWVARIABLE = NEWVARIABLE || {};
> NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
不包含语法错误,唯一的情况是它会抛出错误,如果NEWVARIABLE已经存在并且有一个Tools属性在尝试访问或分配时会抛出错误(某些主机对象可能会发生)。 / p>
如果先前已为NEWVARIABLE
分配了本机对象或原始值,则它不会引发错误,但结果可能与您的预期不符。