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

问题描述 投票:10回答:8

SCRPT5039: Redeclaration of const property line 1 character 1

一号线:var editObj = null;

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

javascript constants
8个回答
4
投票

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

HTML1113: Document mode restart from Quirks to IE9 Standards 

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

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


5
投票

我用以下代码得到了这个错误:

var window;

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

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

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


3
投票

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

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

var screen;

事实证明IE9已经有一个window.screen与此声明相撞,并将我的screen重命名为eScreen修复了问题。

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

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


1
投票

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


1
投票

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

var window = '';
var navigator = '';

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


1
投票

我也得到了这个错误 - 问题是它发射的线是完全虚假的。和OP一样,它是我脚本中的早期行标记:

        var h_combinedView = true;

错误消息非常误导:“0x800a041c - JavaScript运行时错误:让/ Const重新声明”

标记的行不是const定义,它上面的值在我的整个项目中定义一次,永远不会再次定义。

最后,我将问题跟踪到实际的重复const定义。

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

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

没有什么比不准确的错误消息强迫我浏览我的代码了。

:-)


0
投票

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

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

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.