如何寫出高質(zhì)量代碼_第1頁
如何寫出高質(zhì)量代碼_第2頁
如何寫出高質(zhì)量代碼_第3頁
如何寫出高質(zhì)量代碼_第4頁
如何寫出高質(zhì)量代碼_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、主講人:AriesJavaScript現(xiàn)狀現(xiàn)狀我們不編寫代碼,我們只是國外優(yōu)秀框架的搬運工。時下流行的一句描述國內(nèi)js圈現(xiàn)狀的話。BULLSHIT!1.互聯(lián)網(wǎng)創(chuàng)新數(shù)量在幾何級的增長。現(xiàn)在好多大型互聯(lián)網(wǎng)公司都不再安于原來的業(yè)務(wù),或投資或自己研發(fā)新型產(chǎn)品,不少都是和原來的產(chǎn)品獨立的。這些項目都需要大量的前端人才;就目前來看前端工程師極度缺乏。而一個合格的前端工程師對js把控也是必不可少的。2.由于JS是一門動態(tài)的弱類型基于原型鏈的語言,功能比較強大,所以上手比較容易,能快速的完成UI設(shè)計的一些交互能,正因如此,所以就導(dǎo)致了一個問題:簡單的東西不被重視,只管結(jié)果不管過程,想出什么寫什么,最后產(chǎn)出的代

2、碼雜,亂,差。Bug層出不窮,有時候越改越多,越改越亂,甚至要重寫。相信這是很多剛接觸JS的大部分人都會經(jīng)歷過的。高質(zhì)量高質(zhì)量1.全局變量的問題。 JavaScript應(yīng)用程序和web頁面上的所有代碼都共享了這些全局變量,他們住在同一個全局命名空間,所以當(dāng)程序的兩個不同部分定義同名但不同作用的全局變量的時候,命名沖突在所難免。 比如:第三方腳本定義了一個全局變量,叫做result;接著,在你的函數(shù)中也定義一個名為result的全局變量。其結(jié)果就是后面的變量覆蓋前面的,第三方腳本就一下子嗝屁了! 因此,要想和其他腳本完美兼容的話,盡可能少的使用全局變量是很重要的。為此JS有些策略就是為了處理這個

3、問題的,例如立即執(zhí)行函數(shù),閉包等等,但是要想讓全局變量少最重要的還是始終使用var來聲明變量。 由于JavaScript不自覺地創(chuàng)建出全局變量是出乎意料的容易。首先,你可以甚至不需要聲明就可以使用變量;第二,JavaScript有隱含的全局概念,意味著你不聲明的任何變量都會成為一個全局對象屬性。比如看下面的代碼:/不推薦使用function foo() var a = b = 0; / ./推薦使用function foo() var a, b; / . a = b = 0; / 兩個均局部變量2.單var形式 在函數(shù)頂部使用單var語句是比較有用的一種形式,其好處在于:u 提供了一個單一的地

4、方去尋找功能所需要的所有局部變量u 防止變量在定義之前使用的邏輯錯誤u 幫助你記住聲明的全局變量,因此較少了全局變量這種初始化變量同時初始化值的做法是很好的。這樣子可以防止邏輯錯誤(所有未初始化但聲明的變量的初始值是undefined)和增加代碼的可讀性。在你看到代碼后,你可以根據(jù)初始化的值知道這些變量大致的用途,例如是要當(dāng)作對象呢還是當(dāng)作整數(shù)來使。3.for循環(huán)(for Loops)for (var i = 0; i myarray.length; i+) / .這種形式的循環(huán)的不足在于每次循環(huán)的時候數(shù)組的長度都要去獲取下。這會降低你的代碼性能,尤其當(dāng)myarray不是數(shù)組,而是一個HTML

5、Collection對象的時候。HTMLCollections指的是DOM方法返回的對象,例如:document.getElementsByName()document.getElementsByClassName()document.getElementsByTagName()這意味著每次你訪問任何集合的長度,你要實時查詢DOM,而DOM操作一般都是比較昂貴的。這就是為什么當(dāng)你循環(huán)獲取值時,緩存數(shù)組(或集合)的長度是比較好的形式,正如下面代碼顯示的:for (var i = 0, max = myarray.length; i max; i+) / .4.switch模式(switch Pa

6、ttern)l 每個case以break清除結(jié)束;l 以default結(jié)束switch:確??傆薪∪慕Y(jié)果,即使無情況匹配。l 縮進 5.避免 eval() 此方法接受任意的字符串,并當(dāng)作JavaScript代碼來處理。如果你絕對必須使用eval(),你 可以考慮使用new Function()代替。 6.編碼規(guī)范 建立和遵循編碼規(guī)范是很重要的, 這讓你的代碼保持一致性、可預(yù)測、更易于閱讀和理解。一個新的開發(fā)者加入這個團隊可以通讀規(guī)范,理解其它團隊成員書寫的代碼,更快上手干活。 7.縮進 8. 花括號 for (var i = 0; i 10; i += 1) alert(i); for (v

7、ar i = 0; i 10; i += 1) alert(i); 9.空格 空格的使用同樣有助于改善代碼的可讀性和一致性。nfor循環(huán)分號分開后的的部分:如for (var i = 0; i 10; i += 1) .nfor循環(huán)中初始化的多變量(i和max):for (var i = 0, max = 10; i 2)條件分支時,使用switch優(yōu)于if:switch分支選擇的效率高于if,在IE下尤為明顯。4分支的測試,IE下switch的執(zhí)行時間約為if的一半。 使用三目運算符替代條件分支。 10.縮短否定檢測縮短否定檢測雖然這些都正確,但用邏輯非操作符來操作也有同樣的效果: 11.避免全局查找避免全局查找在一個函數(shù)中會用到全局對象存儲為局部變量來減少全局查找,因

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論