在IE中导致错误的Javascript变量或新函数

时间:2012-10-08 22:00:03

标签: javascript

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

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

它给了我NEWVARIABLE不存在的错误

2 个答案:

答案 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分配了本机对象或原始值,则它不会引发错误,但结果可能与您的预期不符。