2009-09-21 67 views
4

我剛剛花了一些時間調試一個問題,因爲忘記在新變量標識符前面使用關鍵字var,所以Javascript在全局範圍內自動創建該變量。有沒有什麼辦法來防止這種情況發生,或者改變默認行爲,而不使用像JSLint這樣的驗證器?防止在Javascript中自動創建全局變量

在編寫和執行Javascript代碼之間運行驗證程序似乎是一個糟糕的編譯藉口,這是我通常會依賴的步驟來捕獲這類事情。

我猜測答案是「不」,所以我正在研究JSLint Eclipse插件,因爲我發佈了這個。

回答

5

ES5 strict mode防止自動創建全局變量,但它可能會在一年之前,有一些認識嚴格模式的任何運輸的瀏覽器,所以JSLint的可能是你最好的賭注在那之前: -/

2

不是我知道 - JS開發人員歷來不願意爲核心語言添加「安全帶」,所以他們已經用JSLint等外部工具來實現。您可以考慮通過Rhino version將JSLint添加到您的構建/測試過程中,並在JSLint報告錯誤時使測試套件失敗。

1

答案確實不是 - 但你可以像你說的那樣使用Eclipse插件,據我所知,在保存等時運行它,所以它不需要額外的步驟。

IntelliJ IDEA還能夠發現未聲明的變量。 IntelliJ可以在你鍵入的時候實時執行,還可以分析你的代碼庫jslint風格。可能也有其他一些替代方案。

3

檢查this方便的小書籤由Remy Sharp創建,您可以使用它來檢查是否有任何變量滑出到全局名稱空間。

0

安裝Firebug,並在您的網站上啓用它。它會在你每次創建一個沒有var的環球時發出抱怨,以及其他一些你可能會或可能不想要的情況。

您也可以使用about:config選項javascript.options.strict來做到這一點,但由於這是全球性的,它也會影響您瀏覽的所有其他網站。

+0

我已經有Firebug,它沒有抱怨。 – 2009-09-21 20:53:32

+0

您必須確保啓用它,包括「腳本」選項卡,就像執行腳本調試時一樣;它不會自行干預。 – bobince 2009-09-21 23:42:01