﻿# 驗證你的 JavaScript 程式：JSLint

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

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

就因為 JavaScript 結構鬆散，所以才需要類似編譯器之類的工具幫我們驗證我們寫的 JavaScript 語法是否符合標準、撰寫 JavaScript 是否結構嚴謹、撰寫的風格是否理想、...等等。JSLint 定義了一組比 [ECMAScript Language Specification 第三版](http://www.ecma-international.org/publications/standards/Ecma-262.htm "Edition 3 of the ECMAScript Language Specification") 所定義的規格中更嚴謹的規格來驗證你的 JavaScript，驗證後的程式碼覺得是優的啦。另外你也可以參考 [Code Conventions for the JavaScript Programming](http://javascript.crockford.com/code.html "Code Conventions for the JavaScript Programming") 文件提到的 JavaScript 程式編碼慣例。

JSLint 幫你檢查未定義的變數、函數、陳述式結尾有沒有加分號(;)、變數使用之前要先用 var 宣告、使用非數字的變數要用 === 或 !== 讓比對的時候不要自動進行轉型(Casting)、盡量不要使用 eval 函數、... 好多好多，驗證完之後會立即出一份完整的報告給你。除了驗證 JavaScript 之外，JSLint 也能夠驗證 [HTML](http://www.w3schools.com/html/default.asp "HTML Tutorial - w3schools.com") 或 [JSON](http://www.json.org/ "JSON - JavaScript Object Notation") 的語法（JSON 其實就是 JavaScript 語法，只是多取一個名字）。

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

**相關連結：**

1.  JSLint, The JavaScript Verifier  
    [https://www.jslint.com/](https://www.jslint.com/)  
    
2.  JSLint, The JavaScript Verifier - Online Validator  
    [http://jslint.com/](http://jslint.com/)  
    
3.  JavaScript 入門  
    [http://javascript.crockford.com/](http://javascript.crockford.com/)  
    
4.  Code Conventions for the JavaScript Programming Language  
    [http://javascript.crockford.com/code.html](http://javascript.crockford.com/code.html)  
    
5.  Introducing JSON  
    [http://www.json.org/](http://www.json.org/)  
    
6.  JSON - Wikipedia, the free encyclopedia  
    [http://en.wikipedia.org/wiki/JSON](http://en.wikipedia.org/wiki/JSON)  
    
7.  JSMin, The JavaScript Minifier  
    [http://javascript.crockford.com/jsmin.html](http://javascript.crockford.com/jsmin.html)  
    
8.  [上線前用 JSMin 壓縮你的 JavaScript 檔案](/post/2007/11/09/Using-JSMin-compress-your-JavaScript-file.aspx)
