JSLint是一個JavaScript驗證工具(www.jslint.com),可以掃描JavaScript原始碼來尋找問題。如果JSLint發現一個問題,JSLint就會顯示描述這個問題的訊息,並指出錯誤在原始碼中的一般位置。有些編碼風格約定可能導致未預見的行為或錯誤,JSLint除了能指出這些不合理的約定,還能標誌出結構方面的問題。儘管JSLint不能保證邏輯一定正確,但確實有助於發現錯誤,這些錯誤很可能導致瀏覽器的JavaScript引擎拋出錯誤。
JSLint定義了一組編碼約定,這比ECMA定義的語言更為嚴格。這些編碼約定汲取了多年來的豐富編碼經驗,並以一條年代久遠的編程原則作為宗旨:能做並不意味著應該做。JSLint會對它認為有風險的編碼實踐加標誌,另外還會指出哪些是明顯的錯誤(見圖5-12),從而促使你養成好的JavaScript編碼習慣。
圖5-12 JSLint會檢查錯誤以及不好的編碼風格,以此提供JavaScript驗證
JSLint可能會把一些結構方面的錯誤標誌為可疑的編碼實踐,以下列出了其中一部分(完整的列表可以參考JSLint的文檔)。
l JSLint要求所有程式碼都以分號結束。儘管JavaScript確實允許將分行符號作為行結束符,但一般認為這種做法是不明確的,而且是不好的編碼風格。
l 使用if和for的語句必須使用大括弧把語句塊括起來。
l 不同於其他程式設計語言,在JavaScript中,塊不會作為變數的範圍。JavaScript只支援函數級範圍。因此,JSLint只接受作為function、if、switch、while、for、do和try語句一部分的塊,其他的塊都會標誌為錯誤。
l var只能聲明一次,而且在使用之前必須聲明。
l JSLint會把出現在return、break、continue或throw語句後面的代碼標誌為不可達的代碼。這些語句後面必須緊跟一個結束大括弧。
對於JavaScript程式員新手來說,JSLint是一個非常好的工具,因為它會教你一些好的JavaScript編碼實踐。由於JSLint能把可能導致邏輯錯誤或其他未預見行為的部分標出來,因此可以減少調試時間。如果你調試一段JavaScript代碼時遇到困難,可以試試JSLint。