JS error 'redeclaration'当它在程序中的第一行时,则为变量

JS error 'redeclaration' of var when it's first line in program?

本文关键字:一行 变量 redeclaration error JS 程序      更新时间:2023-09-26

SCRPT5039: Redeclaration of const property line 1 character 1

line1: var editObj = null;

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

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

var window;
在使用以下代码时,我添加了这个声明来解决节点错误:
if (!window) {
  //node-specific stuff
}

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

修改。至少对我来说是这样。在重声明错误之前,我得到了这个错误:

HTML1113: Document mode restart from Quirks to IE9 Standards 

这表明IE发现它认为是一个错误,所以在Quirks模式下再次加载页面。加载页面两次会使它认为所有内容都声明了两次。所以解决办法就是找出IE不喜欢的地方。

首先,我通过在线HTML验证器运行页面。接下来,我通过jsLint运行javascript。在这一切之后,IE9似乎很高兴。作为奖励,我有了质量更好的代码。我希望。

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

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

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

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

(同样值得注意的是,脚本在IE7, IE8和IE10的原始形式下运行良好,只是在IE9上没有)

我的代码中有同样的问题,事实证明IE显示错误的行是重新声明出现。在我的例子中,它是我稍后在代码中使用的历史记录。您应该检查整个代码是否重新声明了常量。您可以尝试注释掉部分代码,并查看它何时抛出该错误。

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

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

尝试删除/注释这样的声明,看看效果。

我也得到了这个错误——问题是它所触发的行完全是假的。像OP一样,这是我脚本中被标记的前一行:

        var h_combinedView = true;

错误信息是非常误导:"0x800a041c - JavaScript运行时错误:让/Const重新声明"

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

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

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

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

没有什么比不准确的错误信息更能迫使我遍历我的代码了。

:-)

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

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

错误提示从第一行开始。然而,foo没有被重新声明。问题是localData必须在其他地方使用(不是在我的代码中)。无论在文件localData中声明了多远,错误都会在第一行代码中列出。

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

遇到:HTML5/JS窗口商店应用程序

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

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