0

嘿伙计们,我在 Internet Explorer 中遇到了这个声明的问题,我想知道是否有更明智的方法来做到这一点?

var NEWVARIABLE = NEWVARIABLE || {};
NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};

它给了我NEWVARIABLE不存在的错误

4

2 回答 2

3

您不能使用(或测试)未定义的变量。我最初认为这就是您对以下语句所做的事情

var NEWVARIABLE = NEWVARIABLE || {};

然而,多亏了 Fabrício,我意识到 var 声明被提升了(移动到脚本标签的顶部,因此在它遇到语句时已经声明了。

测试变量是否用于typeof === 'undefined'查看变量是否存在的不太容易混淆的方法

var NEWVARIABLE;
if (typeof NEWVARIABLE === 'undefined') {
    NEWVARIABLE = {};
}

检查属性时可以使用相同的样式,不必typeof对属性使用测试,即使它们没有定义,也可以测试它们。

于 2012-10-08T22:01:43.280 回答
0

您已接受答案,但其中包含误导性陈述:

您不能使用(或测试)未定义的变量。这就是你正在做的

该变量已声明,所以它不是你在做什么。

在OP中,代码:

> var NEWVARIABLE = NEWVARIABLE || {};
> NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};

不包含语法错误,它会抛出错误的唯一情况是如果 NEWVARIABLE 已经存在并且具有在尝试访问或分配给它时抛出错误的 Tools 属性(某些主机对象可能会发生)。

如果NEWVARIABLE之前已经分配了一个原生对象或原始值,它不会抛出错误,尽管结果可能不是你所期望的。

于 2012-10-08T23:27:44.270 回答