2011-09-28 383 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 = ''; 

一些嘗試刪除/註釋聲明的,看到效果。

相關問題