当程序的第一行时,JS错误'重新声明'var?

时间:2011-09-28 04:04:30

标签: javascript constants

SCRPT5039: Redeclaration of const property line 1 character 1

第1行:var editObj = null;

这是文件的开头,我检查以确保该变量不在被调用的任何其他js文件中。这是说我以后重新宣布它吗? (如果这样,行引用没用)或者这有什么问题?

8 个答案:

答案 0 :(得分:5)

我使用以下代码收到此错误:

var window;

使用以下代码时,我已添加此声明以解决节点错误:

if (!window) {
  //node-specific stuff
}

如果没有上述声明,节点会抱怨。最后,我选择复制/粘贴而不是尝试在节点和浏览器实现之间共享完全相同的文件。

答案 1 :(得分:4)

编辑:修正了它。无论如何,对我来说。我在重新声明错误之前收到此错误:

HTML1113: Document mode restart from Quirks to IE9 Standards 

这表明IE找到它认为是错误的内容,因此在Quirks模式下再次加载页面。加载页面两次使它认为一切都被声明了两次。因此解决方案是找到IE不喜欢的内容。

首先,我通过online HTML validator运行了该页面。接下来,我通过jsLint运行了我的javascript。毕竟,IE9似乎很开心。作为奖励,我有更好的质量代码。我希望。

答案 2 :(得分:3)

我遇到了同样错误的类似问题,但我的第一行代码是alert(0);我已经插入以确保脚本正在加载!有趣的是,脚本是根据IE9的开发人员工具加载的,但第一行从未执行过,错误指向此alert(0);作为重新声明。我甚至在它之前插入了行和空格,并且相应地改变了行和字符数。然而,这(显然)不是被重新宣布的东西,因为它甚至不是宣言,更不用说重新声明了!

我从脚本末尾删除了块,直到它执行alert(0);(表示脚本已加载并已成功解析),我发现违规行是:

var screen;

原来IE9已经有window.screen与此声明相冲突,并将我的screen重命名为eScreen解决了问题。

所以我的回答是:不要相信IE9指示重新声明的位置!

(值得注意的是,脚本在IE7,IE8和IE10上的原始格式运行良好,而不是在IE9上。)

答案 3 :(得分:1)

我在我的代码中遇到了同样的问题,结果显示IE显示错误的行是重新声明出现的。就我而言,这是我后来在代码中使用的历史。您应该检查整个代码以重新声明常量。您可以尝试注释掉部分代码,看看它何时抛出该错误。

答案 4 :(得分:1)

出现错误是因为您声明了一些与默认浏览器属性匹配的全局/局部变量。像

这样的东西
var window = '';
var navigator = '';

尝试删除/评论此类声明并查看效果。

答案 5 :(得分:1)

我也遇到了这个错误-问题是它触发的线路完全是伪造的。像OP一样,这是我脚本中的前几行被标记:

        var h_combinedView = true;

该错误消息极具误导性:“ 0x800a041c-JavaScript运行时错误:Let / Const重新声明

标记行不是const定义,并且它的值在我的整个项目中都定义一次,而不再定义。

最终,我将问题归结为实际重复的const定义。

const ve = { Normal: 'default', Search: 'search', View: 'view', Alts: 'ViewAlts', Edit: 'edit' }

(我已将多个地方使用的定义移到共享文件中,却忘记删除一个副本)。错误消息是合法的-它是一个重复的const定义-但标记的行和标识符与该问题无关。

没有什么不正确的错误消息会迫使我浏览代码。

:-)

答案 6 :(得分:0)

我遇到了同样的错误,并发现了这篇文章。虽然我没有与OP相同的root问题我认为我会分享我的解决方案,以防其他人犯同样的错误并到达这里。我在一个单独的js文件中收到错误。在简化之后,我发现我可以从以下代码生成错误:

var foo = null;
var bar = null;
var localData = null;

错误说它来自第一行。然而,foo没有被重新宣布。问题是localData必须在别处使用(不在我的代码中)。无论文件localData被声明多远,都将错误列为第一行实际代码。

因此,如果其他解决方案不起作用,请尝试重命名代码文件中的每个变量,以确定哪个可能导致问题。不要相信调试器指向正确的行。

遇到:HTML5 / JS Window Store应用程序。

答案 7 :(得分:0)

根据我做git merge的错误,我发现我已经在我的HTML中包含了两次脚本。这样,当它第二次运行脚本时,它重新声明了变量。

它只给了我第一个const的错误,这让我感到困惑,因为我试图删除变量或在文件中添加另一个变量,它总是给我第一行的错误