文:阿蜜果/2011-11-3
轉(zhuǎn)載請(qǐng)注明出處
變量名使用大寫字母開頭是個(gè)壞習(xí)慣,只有“構(gòu)造器”(JS的類)才用大寫字母開頭。好多VB、C#等微軟平臺(tái)下的程序員都喜歡將變量的第一個(gè)字母大寫,但像Java這些編程語(yǔ)言的編程規(guī)范里要求變量名以小寫字母開頭,這種camel寫法在筆者認(rèn)為更好。
若沒有用var聲明變量,則會(huì)在其使用后當(dāng)成全局變量來(lái)處理,全局變量有很多“壞味道”,請(qǐng)看如下代碼:
第一個(gè)alert提示“2”,第二個(gè)alert因?yàn)?/span>str被定義為局部變量,所以出現(xiàn)JavaScript錯(cuò)誤:str未定義。
首先是使用工具來(lái)增加可讀性(document.getElementsByClassName vs $())。其次是不能因?yàn)楹?jiǎn)潔而破壞可讀性,比如不要使用太復(fù)雜的三目運(yùn)算符(三目運(yùn)算符里還包括另外一個(gè)三目運(yùn)算符什么的最討厭了……)。提高可讀性的方法很多,有時(shí)候需要?jiǎng)?chuàng)建必要的變量。例如如下長(zhǎng)長(zhǎng)的語(yǔ)句:
可替換為如下兩句容易理解的語(yǔ)句:
《JavaScript: Bad Practices》一文中有很好的實(shí)例,可讀性不夠好的語(yǔ)句段如下:
因?yàn)槠湓O(shè)置的border值都一樣,可以使用如下簡(jiǎn)短而可讀性更好的語(yǔ)句:
良好的代碼是最好的注釋。如果你覺得你的代碼太復(fù)雜,不用注釋說不清楚,那可能你的代碼寫得不夠清晰。只提供關(guān)鍵代碼的注釋,其余的代碼應(yīng)該是能夠自注釋的。
在代碼中拼接長(zhǎng)長(zhǎng)的HTML字符串,非常不便理解,如果拼接的字符串需要使用innerHTML添加到document的某個(gè)元素中,可以采用別的辦法(例如使用appendChild()方法添加元素):
指的是當(dāng)父元素里要?jiǎng)?chuàng)建很多子元素時(shí),直接一個(gè)一個(gè)使用appendChild()方法拼接的速度不是很理想,應(yīng)該先用document.createDocumentFragment創(chuàng)建一個(gè)fragment對(duì)象,用這個(gè)對(duì)象來(lái)appendChild(),再將這個(gè)fragment添加到父元素。另外作者還提到innerHTML還會(huì)更快。
如下是帶著“壞味道”的實(shí)例:
改造后的代碼如下所示:
例如如下代碼中,使用了“javascript:”偽協(xié)議和“#”記號(hào):
這樣做的缺點(diǎn)很明顯,首先它在HTML中混雜了JavaScript代碼,沒有遵循“分離JavaScript”的原則,可以在獨(dú)立的js文件中為對(duì)應(yīng)的鏈接添加處理事件,例如:
例如在如下代碼中,當(dāng)JavaScript被禁用時(shí),因?yàn)?/span>href被設(shè)置為“#”,當(dāng)JavaScript功能被禁用后,點(diǎn)擊但不會(huì)引起任何動(dòng)作:
如果JavaScript方法只是為了做一些炫目或更理想化的用戶體驗(yàn),而后還是要跳轉(zhuǎn)到某個(gè)地址,那么可以為這個(gè)href設(shè)置語(yǔ)句的地址,使得它能在JavaScript被禁用時(shí),也能完成基本功能,而在對(duì)應(yīng)的JavaScript處理方法中,只要返回false,href中的鏈接就不會(huì)被執(zhí)行跳轉(zhuǎn)。
例如在如下代碼中,使用<script>將一串JS代碼寫入到了html文件中:
其實(shí)這段代碼完全可以寫入js文件中,例如example.js中,再使用如下語(yǔ)句引入:
很多JS在代碼編寫時(shí),使用getElementById()方法取得某個(gè)元素后馬上就對(duì)元素進(jìn)行一些屬性設(shè)置等操作,在這種情況下,他是做了假設(shè)的,即假設(shè)這個(gè)元素已經(jīng)存在的。若這個(gè)元素不一樣存在,程序員要盡量避免這種假設(shè),而檢查該元素是否存在。
例如在如下代碼中,就進(jìn)行了過多的假設(shè):
可將這段代碼改造成:
(1)《JavaScript: Bad Practices》:
http://james.padolsey.com/javascript/javascript-bad-practices/
(2)《寫JavaScript時(shí)要注意避免的壞習(xí)慣》:
http://hi.baidu.com/chrisyue/blog/item/ccea6060ce14cb49eaf8f867.html