Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导致IE中出现错误的Javascript变量或新函数_Javascript - Fatal编程技术网

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

导致IE中出现错误的Javascript变量或新函数,javascript,Javascript,嘿,伙计们,我对Internet Explorer中的这句话有意见, 我想知道有没有更明智的方法 var NEWVARIABLE = NEWVARIABLE || {}; NEWVARIABLE.Tools = NEWVARIABLE.Tools || {}; 这给了我一个错误,NEWVARIABLE不存在您不能使用(或测试)未定义的变量。我原本以为这就是你用下面的陈述所做的 var NEWVARIABLE = NEWVARIABLE || {}; 然而,多亏了Fabricio,我意识到va

嘿,伙计们,我对Internet Explorer中的这句话有意见, 我想知道有没有更明智的方法

var NEWVARIABLE = NEWVARIABLE || {};
NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
这给了我一个错误,
NEWVARIABLE
不存在

您不能使用(或测试)未定义的变量。我原本以为这就是你用下面的陈述所做的

var NEWVARIABLE = NEWVARIABLE || {};
然而,多亏了Fabricio,我意识到var声明被挂起(移动到script标记的顶部,因此在到达语句时已经被声明)

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

var NEWVARIABLE;
if (typeof NEWVARIABLE === 'undefined') {
    NEWVARIABLE = {};
}
在检查属性时可以使用相同的样式,您不必使用
typeof
测试属性,您可以测试属性,即使它们没有定义。

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

var NEWVARIABLE = NEWVARIABLE || {};
然而,多亏了Fabricio,我意识到var声明被挂起(移动到script标记的顶部,因此在到达语句时已经被声明)

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

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

检查属性时可以使用相同的样式,您不必使用
typeof
测试属性,即使未定义属性,也可以测试属性。

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

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

变量已声明,因此它不是您正在执行的操作

在OP中,代码为:

> var NEWVARIABLE = NEWVARIABLE || {};
> NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
不包含语法错误,它将引发错误的唯一情况是NEWVARIABLE已经存在,并且有一个Tools属性,该属性在尝试访问或分配时会引发错误(某些主机对象可能会发生这种情况)


如果以前为
NEWVARIABLE
分配了一个本机对象或原语值,它不会抛出错误,尽管结果可能不是您所期望的。

您已经接受了答案,但它包含一个误导性陈述:

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

变量已声明,因此它不是您正在执行的操作

在OP中,代码为:

> var NEWVARIABLE = NEWVARIABLE || {};
> NEWVARIABLE.Tools = NEWVARIABLE.Tools || {};
不包含语法错误,它将引发错误的唯一情况是NEWVARIABLE已经存在,并且有一个Tools属性,该属性在尝试访问或分配时会引发错误(某些主机对象可能会发生这种情况)



如果以前为
NEWVARIABLE
分配了一个本机对象或基元值,它不会抛出错误,尽管结果可能不是您所期望的。

您的代码没有任何意义。您试图实现什么?@SamuelEdwinWard这是在创建一个名称空间,非常有意义,您只是从未见过这可能是相关的假设代码在语法或功能上没有任何错误,错误消息是什么?你的代码没有任何意义。你想做什么?@SamuelEdwinWard这是在创建一个名称空间,非常有意义,你只是从来没有见过这可能与代码在语法或功能上没有任何错误有关e、 错误消息是什么?如果NEWVARIABLE未定义,则NEWVARIABLE被构造为新对象否?@My_Boon如果您通过运行if测试来使用它,则不允许尝试从未定义的变量读取faik,如果尚未定义该变量,
var
声明将被提升到作用域的顶部并具有本机属性值
未定义
,直到在运行时达到赋值。似乎可以解决这个问题。事实上,我一直这样做,这里的注释是,+1表示格外谨慎。如果NEWVARIABLE未定义,则NEWVARIABLE被构造为一个新对象否?@My_-Boon您正在通过运行if测试来使用它,您不允许尝试从一个未定义的对象读取定义变量faik,如果变量还没有定义,
var
声明被提升到作用域的顶部,并具有本机值
undefined
,直到在运行时到达赋值。似乎可以解决这个问题。事实上,我一直这样做,这里的注释是+1,这是为了格外小心。@ehime我知道我的回答并没有回答这个问题,但我也看不出这是如何回答这个问题的。它只是解释了我的问题出了什么问题,并没有建议OP需要做什么来解决它?爱媛,你的最终解决方案是什么?@JuanMendes-我指出OP中没有足够的信息来提供一个明确的answ呃,因此,解释为什么会出现错误,作为在试图修复错误时要寻找什么的提示。我理解你所做的,我只是试图理解为什么OP认为这是正确的答案。@ehime我知道我的答案没有解决这个问题,但我也看不出这是如何回答这个问题的。它只是解释了什么是wrong回答了我的问题,但没有建议OP需要做什么来解决它?爱媛,你的最终解决方案是什么?@JuanMendes-我指出OP中没有足够的信息来提供一个明确的答案,因此解释了为什么会出现错误,作为在尝试修复它时寻找什么的提示。我明白了什么是的,我只是想理解为什么OP认为这是正确的答案。