[英]JS error 'redeclaration' of var when it's first line in program?
SCRPT5039: Redeclaration of const property line 1 character 1
line1: var editObj = null;
这是文件的开头,我检查以确保变量不在被调用的任何其他js文件中。 这是说我以后重新宣布它吗? (如果这样,行引用没用)或者这有什么问题?
我用以下代码得到了这个错误:
var window;
使用以下代码时,我已添加此声明以解决节点错误:
if (!window) {
//node-specific stuff
}
如果没有上述声明,节点会抱怨。 最后,我选择复制/粘贴而不是尝试在节点和浏览器实现之间共享完全相同的文件。
我有同样的错误,但我的第一行代码是一个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相同的root问题我认为我会分享我的解决方案,以防其他人犯同样的错误并到达这里。 我在一个单独的js文件中收到错误。 简化后,我发现我可以从以下代码生成错误:
var foo = null;
var bar = null;
var localData = null;
错误说它来自第一行。 然而,foo没有被重新宣布。 问题是localData必须在别处使用(不在我的代码中)。 无论文件localData声明多远,都将错误列为第一个实际代码行。
因此,如果其他解决方案不起作用,请尝试重命名代码文件中的每个变量,以确定哪个可能导致问题。 不要相信调试器指向正确的行。
遇到:HTML5 / JS Window Store应用程序。
从我做git merge的错误中,我发现我已经在我的HTML中包含了两次脚本。 这样,当它第二次运行脚本时,它重新声明了变量。
它只给了我第一个const
的错误,这让我感到困惑,因为我试图删除变量或添加另一个变量,它总是给我第一行的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.