JSLint是一個JavaScript驗證工具(非開源),可以掃描JavaScript源代碼來查找問題。如果JSLint發(fā)現(xiàn)一 個問題,JSLint就會顯示描述這個問題的消息,并指出錯誤在源代碼中的大致位置。有些編碼風(fēng)格約定可能導(dǎo)致未預(yù)見的行為或錯誤,JSLint除了能指 出這些不合理的約定,還能標(biāo)志出結(jié)構(gòu)方面的問題。盡管JSLint不能保證邏輯一定正確,但確實有助于發(fā)現(xiàn)錯誤,這些錯誤很可能導(dǎo)致瀏覽器的 JavaScript引擎拋出錯誤。

JSLint定義了一組編碼約定,這比ECMA定義的語言更為嚴(yán)格。這些編碼約定汲取了多年來的豐富編碼經(jīng)驗,并以一條年代久遠(yuǎn)的編程原則 作為宗旨:能做并不意味著應(yīng)該做。JSLint會對它認(rèn)為有的編碼實踐加標(biāo)志,另外還會指出哪些是明顯的錯誤,從而促使你養(yǎng)成好的 JavaScript編碼習(xí)慣。

JSLint可能會把一些結(jié)構(gòu)方面的錯誤標(biāo)志為可疑的編碼實踐,以下列出了其中一部分(完整的列表可以參考JSLint的文檔)。

    JSLint要求所有代碼行都以分號結(jié)束。盡管JavaScript確實允許將換行符作為行結(jié)束符,但一般認(rèn)為這種做法是不明確的,而且是不好的編碼風(fēng)格。

    使用if和for的語句必須使用大括號把語句塊括起來。

    不同于其他編程語言,在JavaScript中,塊不會作為變量的作用域。JavaScript只支持函數(shù)級作用域。因此,JSLint只接受作為function、if、switch、while、for、do和try語句一部分的塊,其他的塊都會標(biāo)志為錯誤。

    var只能聲明一次,而且在使用之前必須聲明。

    JSLint會把出現(xiàn)在return、break、continue或throw語句后面的代碼標(biāo)志為不可達的代碼。這些語句后面必須緊跟一個結(jié)束大括號。

    對于JavaScript來說,JSLint是一個非常好的工具,因為它會教你一些好的JavaScript編碼實踐。由于JSLint能 把可能導(dǎo)致邏輯錯誤或其他未預(yù)見行為的部分標(biāo)出來,因此可以減少調(diào)試時間。如果你調(diào)試一段JavaScript代碼時遇到困難,可以試試JSLint。