摘要:本文總結(jié)了則的最佳實(shí)踐,希望對(duì)各位爪哇國(guó)編劇有用。使用有兩種等值運(yùn)算符,分別是和,以及和。比較兩個(gè)值的時(shí)候,請(qǐng)使用前者,避免討厭的強(qiáng)制類型轉(zhuǎn)換帶來(lái)預(yù)料之外的結(jié)果。下只提供無(wú)強(qiáng)制類型轉(zhuǎn)換的別名和別名,不用頭疼選哪種。
本文總結(jié)了20則JavaScript的最佳實(shí)踐,希望對(duì)各位爪哇國(guó)編劇有用。(順帶推銷下CoffeeScript)
。
1. 使用 ===JavaScript有兩種等值運(yùn)算符,分別是===和==,以及!==和!=。比較兩個(gè)值的時(shí)候,請(qǐng)使用前者,避免JavaScript討厭的強(qiáng)制類型轉(zhuǎn)換帶來(lái)預(yù)料之外的結(jié)果。
CoffeeScript下只提供無(wú)強(qiáng)制類型轉(zhuǎn)換的==(別名is)和!=(別名isnt),不用頭疼選哪種。
2. eval很邪惡eval讓我們將字符串作為參數(shù)執(zhí)行,這是非常強(qiáng)大的特性。然而,eval會(huì)大幅降低腳本的性能,也會(huì)引起安全問(wèn)題。除非你打算用JavaScript寫一個(gè)編譯器,還是對(duì)eval敬而遠(yuǎn)之的好。
3. 少打字多費(fèi)腦省掉一些花括號(hào),大多數(shù)瀏覽器仍然能理解,例如:
if(someVariableExists) x = false
然而,復(fù)雜一點(diǎn)的代碼就可能帶來(lái)問(wèn)題:
if(someVariableExists) x = false anotherFunctionCall();
你想表達(dá)的也許是:
if(someVariableExists) { x = false; anotherFunctionCall(); }
然而實(shí)際上等價(jià)于:
if(someVariableExists) { x = false; } anotherFunctionCall();
所以,還是乖乖地寫花括號(hào)吧,這能為你省去無(wú)數(shù)麻煩。
如果你真那么討厭花括號(hào),還是投入CoffeeScript的懷抱吧:
if someVariable? x = false if someVariable? x = false anotherFunctionCall()
同理,大多數(shù)瀏覽器允許你省略分號(hào):
var someItem = "some string" function doSomething() { return "something" }
這和省略花括號(hào)一樣糟糕,還是老實(shí)一點(diǎn)好:
var someItem = "some string"; function doSomething() { return "something"; }
或者,投奔CoffeeScript吧,不用分號(hào)了:
someItem = "some string" doSomething = -> "something"
函數(shù)的寫法是不是也很帥?直接定義一個(gè)匿名函數(shù),然后把它賦給一個(gè)變量即可。
4. 使用JSLintJSLint是一款非常棒的調(diào)試器,它會(huì)迅速找出代碼中的問(wèn)題,包括語(yǔ)法錯(cuò)誤、編碼風(fēng)格和程序結(jié)構(gòu)問(wèn)題。
5. 將腳本放在頁(yè)面的底部腳本加載是阻塞的,腳本加載并執(zhí)行完之后,瀏覽器不能繼續(xù)渲染下面的內(nèi)容。因此,用戶被迫等待更長(zhǎng)時(shí)間。如果你的JavaScript腳本只是用來(lái)增強(qiáng)效果,那么請(qǐng)將它放在頁(yè)面的最后:
And now you know my favorite kinds of corn.