2011-09-28 40 views
8

SCRPT5039: Redeclaration of const property line 1 character 1var在程序中的第一行时出现错误'redeclaration'var?

线路1:var editObj = null;

这是文件的开头,我检查,以确保变量在被调用任何其他js文件。它是否说我稍后重新声明它? (如果这样线参考是没有用的),或者这有什么问题?

+0

哪个浏览器或其他Javascript引擎?你从哪里看到这个错误?什么是SCRPT5039? –

+0

这就是说你之前已经声明过,再次检查。 – amosrivera

+0

仅仅因为它是_that_脚本中的第一行,如果在其之前加载了其他脚本,则无关紧要。 –

回答

3

编辑:修正了它。无论如何,对我而言。我得到了重新声明错误之前此错误:

HTML1113: Document mode restart from Quirks to IE9 Standards 

这表明,IE浏览器发现它认为是一个错误,所以再次加载页面的怪癖模式。加载页面两次使它认为一切都被声明了两次。所以解决办法是找到IE不喜欢的东西。

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

5

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

var window; 

我一直在使用下面的代码时,添加了此声明要解决一个节点错误:

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

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

+0

由于某种原因,即不支持这一点。非常奇怪 – jontro

+0

你可能已经想通了,但是当我们使用保留关键字作为变量名时,我观察到了这种错误。 – Emma

1

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

3

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

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

var screen; 

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

所以我的答案是:不要相信IE9的重新声明的地方!

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

+0

它也适用于IE9兼容模式 – JoshBerke

+0

事实上,我注意到IE9的错误现在是“重新声明const属性”,这是更有帮助。 –

0

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

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

该错误表示它来自第一行。但是,foo没有被重新宣布。问题在于localData必须在别处使用(不在我的代码中)。无论声明文件localData有多远,错误列在第一个真正的代码行上。

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

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

1

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

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

一些尝试删除/注释声明的,看到效果。

相关问题