新聞中心
[[339224]]

JavaScript使用兩種相等性操作符:===|!==和==|!=。通常認(rèn)為做比較的最佳實(shí)踐是使用前一組操作符。
“若兩個(gè)操作數(shù)的類型和值相同,那么===比較的結(jié)果為真,!==比較的結(jié)果為假?!?/p>
— JavaScript語(yǔ)言精粹(JavaScript: The Good Parts)
然而,如果使用==和!=,當(dāng)比較不同類型的操作數(shù)時(shí),你就會(huì)碰到問(wèn)題啦。在這種情況下,這組操作符會(huì)嘗試對(duì)操作數(shù)的值做無(wú)用的強(qiáng)制轉(zhuǎn)換。
Eval就是糟糕的代名詞
對(duì)于那些不熟悉JavaScript的人來(lái)說(shuō),函數(shù)”evel”讓我們能夠訪問(wèn)JavaScript編譯器。我們可以通過(guò)給”eval”傳遞一個(gè)字符串參數(shù)來(lái)得到該字符串執(zhí)行的結(jié)果。
這不僅會(huì)極大地降低你的腳本的性能,也會(huì)造成一個(gè)巨大的安全隱患,因?yàn)檫@賦予傳遞進(jìn)來(lái)的純文本太多的能力。要盡可能地避免eval函數(shù)的使用。
不要懶手
技術(shù)上來(lái)說(shuō),你確實(shí)可能僥幸地省略多數(shù)花括號(hào)和分號(hào)。大多數(shù)瀏覽器都能夠正確地解釋如下代碼片段:
- if(someVariableExists)
- x = false
然而,再考慮一下這段代碼:
- if(someVariableExists)
- x = false
- anotherFunctionCall();
可能會(huì)有人認(rèn)為上一段代碼等價(jià)于:
- if(someVariableExists) {
- x = false;
- anotherFunctionCall();
- }
很不幸,他錯(cuò)了。事實(shí)上,它的本意是:
- if(someVariableExists)
- x = false;
- anotherFunctionCall();
你應(yīng)該也注意到了,代碼中縮進(jìn)模仿了花括號(hào)的功能。
毋庸置疑,這是非??植赖淖龇ǎ瑹o(wú)論如何都應(yīng)該避免。唯一可以省略花括號(hào)的時(shí)候是在一行式的語(yǔ)句中,但即使這種情況,也是很有爭(zhēng)議的。
- if(2 + 2 === 4) return 'nicely done';
始終要想著以后。
如果以后的某個(gè)時(shí)候,你需要在這種if語(yǔ)句中增加更多的命令,那該怎么辦呢?
沒法子,你就只能重寫這塊代碼了。處理這個(gè)問(wèn)題的底線是對(duì)于省略寫法保持謹(jǐn)慎。
使用JS Lint
JSLint是Douglas Crockford編寫的一個(gè)調(diào)試器。簡(jiǎn)單地將你的腳本拷貝進(jìn)去,它就會(huì)快速地掃描你的代碼中任何明顯的問(wèn)題和錯(cuò)誤。
“JSLint獲取一份JavaScript源碼,然后掃描代碼。如果發(fā)現(xiàn)問(wèn)題,就會(huì)返回一條信息描述這個(gè)問(wèn)題以及這個(gè)問(wèn)題在源碼中的大致位置。問(wèn)題雖然經(jīng)常是語(yǔ)法錯(cuò)誤,卻不一定是。
JSLint也會(huì)查看一些風(fēng)格習(xí)慣以及結(jié)構(gòu)問(wèn)題。它并不證明你的代碼是否正確,只是提供另外的一雙眼睛來(lái)幫助發(fā)現(xiàn)問(wèn)題?!?/p>
—JSLint文檔
在結(jié)束腳本代碼的編寫之前,對(duì)其執(zhí)行一次JSLint,能夠保證你不會(huì)犯一些愚蠢的錯(cuò)誤。
將腳本置于頁(yè)面的底部
這條技巧在本系列前面的文章中也推薦過(guò)。因?yàn)樗诖颂幰卜浅:线m(As it’s highly appropriate though),所有我將那段信息直接粘貼在這里。
記住—這條最佳實(shí)踐的主要目標(biāo)是盡可能快速地為用戶加載頁(yè)面。當(dāng)加載一個(gè)腳本時(shí),瀏覽器直到整個(gè)腳本文件全部加載完畢才能繼續(xù)。
因此,用戶必須等上更長(zhǎng)的時(shí)間才能注意到任何的進(jìn)度。
如果JS文件的目的僅僅是增加功能—例如,在點(diǎn)擊某個(gè)按鈕后—那么就將那些文件放在底部,body結(jié)束標(biāo)簽之前吧。這絕對(duì)是一個(gè)最佳實(shí)踐。
更好的做法
And now you know my favorite kinds of corn.


咨詢
建站咨詢