The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

驗證你的 JavaScript 程式:JSLint

我們常常在寫 JavaScript,但又要如何驗證我們的 JavaScript 寫的好不好呢?有個 JSLint 網站就幫我們做這件事。之前我也是認為在寫 JavaScript 的時候都覺得只要跑起來沒問題就好,測過 IE, Firefox 就可以了,也不覺得省略一些分號結尾(;)或有沒有加上 { , } 或是部分使用全域變數(Global variables)有什麼關係,但是總是會不定時在一些特定的情況下出錯,且通常 JavaScript 發現錯誤不太容易,通常是客戶提出說「好像有問題」時才會處理,這實在不太專業。

對一個成熟且結構嚴謹的程式語言來說,編譯器(compiler)會幫我們做掉許多潛在可能會造成程式執行不穩定的情況,甚至會主動修正我們所寫的程式,讓我們的程式符合標準。但是 JavaScript 是個非常結構鬆散的程式語言,多年前 JavaScript 通常只會用來執行一些 Web 簡單的工作,例如:驗證表單、修改網頁內容、基本的數學運算,但在現在這個 Web 2.0 的時代,越來越依賴 JavaScript 幫我們處理許多之前不會用 JavaScript 處理的事,或開始用 JavaScript 開發一些較複雜的專案。但是 JavaScript 的語言結構卻沒有重大展進,最主要還是因為 JavaScript 太多人用了,為了讓大多人寫的 JavaScript 還是可以繼續執行,通常維持結構鬆散對大家比較好寫,缺點就是很容易出現臭蟲(Bugs)。

就因為 JavaScript 結構鬆散,所以才需要類似編譯器之類的工具幫我們驗證我們寫的 JavaScript 語法是否符合標準、撰寫 JavaScript 是否結構嚴謹、撰寫的風格是否理想、...等等。JSLint 定義了一組比 ECMAScript Language Specification 第三版 所定義的規格中更嚴謹的規格來驗證你的 JavaScript,驗證後的程式碼覺得是優的啦。另外你也可以參考 Code Conventions for the JavaScript Programming 文件提到的 JavaScript 程式編碼慣例。

JSLint 幫你檢查未定義的變數、函數、陳述式結尾有沒有加分號(;)、變數使用之前要先用 var 宣告、使用非數字的變數要用 === 或 !== 讓比對的時候不要自動進行轉型(Casting)、盡量不要使用 eval 函數、... 好多好多,驗證完之後會立即出一份完整的報告給你。除了驗證 JavaScript 之外,JSLint 也能夠驗證 HTMLJSON 的語法(JSON 其實就是 JavaScript 語法,只是多取一個名字)。

我第一次使用 JSLint 網站驗證我自己寫的 JavaScript 程式時真的還蠻受傷的,因為每一支程式都有被糾正需要改善的地方,但改過之後你真的可以放心的對自己說:「我寫的 JavaScript 是最專業的」。

相關連結:

  1. JSLint, The JavaScript Verifier
    http://jslint.com/lint.html
  2. JSLint, The JavaScript Verifier - Online Validator
    http://jslint.com/
  3. Code Conventions for the JavaScript Programming Language
    http://javascript.crockford.com/code.html
  4. Introducing JSON
    http://www.json.org/
  5. JSON - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/JSON
  6. JSMin, The JavaScript Minifier
    http://javascript.crockford.com/jsmin.html