嘿伙计们,我在 Internet Explorer 中遇到了这个声明的问题,我想知道是否有更明智的方法来做到这一点?
var NEWVARIABLE = NEWVARIABLE || {};
NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
它给了我NEWVARIABLE
不存在的错误
嘿伙计们,我在 Internet Explorer 中遇到了这个声明的问题,我想知道是否有更明智的方法来做到这一点?
var NEWVARIABLE = NEWVARIABLE || {};
NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
它给了我NEWVARIABLE
不存在的错误
您不能使用(或测试)未定义的变量。我最初认为这就是您对以下语句所做的事情
var NEWVARIABLE = NEWVARIABLE || {};
然而,多亏了 Fabrício,我意识到 var 声明被提升了(移动到脚本标签的顶部,因此在它遇到语句时已经声明了。
测试变量是否用于typeof === 'undefined'
查看变量是否存在的不太容易混淆的方法
var NEWVARIABLE;
if (typeof NEWVARIABLE === 'undefined') {
NEWVARIABLE = {};
}
检查属性时可以使用相同的样式,不必typeof
对属性使用测试,即使它们没有定义,也可以测试它们。
您已接受答案,但其中包含误导性陈述:
您不能使用(或测试)未定义的变量。这就是你正在做的
该变量已声明,所以它不是你在做什么。
在OP中,代码:
> var NEWVARIABLE = NEWVARIABLE || {};
> NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
不包含语法错误,它会抛出错误的唯一情况是如果 NEWVARIABLE 已经存在并且具有在尝试访问或分配给它时抛出错误的 Tools 属性(某些主机对象可能会发生)。
如果NEWVARIABLE
之前已经分配了一个原生对象或原始值,它不会抛出错误,尽管结果可能不是你所期望的。