2

我終於到了我的JavaScript代碼編譯在谷歌封閉編譯器沒有任何錯誤或警告的地步。現在我想重新編譯生成的代碼,並且在將代碼粘貼回編譯器時,我收到了超過100條警告:其中大多數是JSC_REDECLARED_VARIABLE和幾個JSC_INEXISTENT_PROPERTY。谷歌封閉編譯器 - 雙編譯

這是爲什麼?

enter image description here

+0

你能舉一個例子來重現這個錯誤嗎?這聽起來不太可能atm(例如'JSC_REDECLARED_VARIABLE'錯誤,這意味着GCC會創建至少兩次聲明相同變量的代碼)。 – 2012-03-19 14:11:43

+0

@RobW:這是問題的截圖;該名單繼續。 – frenchie 2012-03-19 14:16:25

+0

單獨的核心js文件大約4000行,隨處可用函數調用;不能只是做一個簡化的演示。 – frenchie 2012-03-19 14:32:44

回答

1

我不認爲谷歌關閉編譯器產生的目的是進一步彙編代碼。

要使代碼正確編譯,必須保留一些結構。但是額外的結構是編譯器刪除的東西,如果沒有它,編譯器無法正確解釋代碼。

你應該可以做更簡單的編譯模式,但不能使用高級模式。

+0

我試圖先在簡單模式下編譯我的代碼,然後複製該輸出以進行高級編譯:同樣的問題。它看起來像所有的問題都來自這樣的行:function ...(a){... a =它不喜歡函數參數獲得新的任務 – frenchie 2012-03-19 14:28:38

+0

最好的可能是隻編譯一次。你爲什麼要編譯兩次? – 2012-03-19 14:47:19

+0

那麼我打算做一個雙重模糊處理,所以我想看看在編譯成混淆器之前,google編譯器生成的代碼是什麼樣的。但可能是雙重的,任何事情都可能不是最好的。 – frenchie 2012-03-19 14:50:43

0

REDECLARED_VARIABLE是WARNING不是錯誤。它旨在向開發者指出可能的問題。如果開發人員知道他們在做什麼以及編譯器在做什麼,開發人員可能會忽略它