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

下載本文檔

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

文檔簡介

1、主講人:AriesJavaScript現(xiàn)狀現(xiàn)狀我們不編寫代碼,我們只是國外優(yōu)秀框架的搬運(yùn)工。時(shí)下流行的一句描述國內(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)品獨(dú)立的。這些項(xiàng)目都需要大量的前端人才;就目前來看前端工程師極度缺乏。而一個(gè)合格的前端工程師對js把控也是必不可少的。2.由于JS是一門動(dòng)態(tài)的弱類型基于原型鏈的語言,功能比較強(qiáng)大,所以上手比較容易,能快速的完成UI設(shè)計(jì)的一些交互能,正因如此,所以就導(dǎo)致了一個(gè)問題:簡單的東西不被重視,只管結(jié)果不管過程,想出什么寫什么,最后產(chǎn)出的代

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

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

4、方去尋找功能所需要的所有局部變量u 防止變量在定義之前使用的邏輯錯(cuò)誤u 幫助你記住聲明的全局變量,因此較少了全局變量這種初始化變量同時(shí)初始化值的做法是很好的。這樣子可以防止邏輯錯(cuò)誤(所有未初始化但聲明的變量的初始值是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í)候數(shù)組的長度都要去獲取下。這會(huì)降低你的代碼性能,尤其當(dāng)myarray不是數(shù)組,而是一個(gè)HTML

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

6、ttern)l 每個(gè)case以break清除結(jié)束;l 以default結(jié)束switch:確保總有健全的結(jié)果,即使無情況匹配。l 縮進(jìn) 5.避免 eval() 此方法接受任意的字符串,并當(dāng)作JavaScript代碼來處理。如果你絕對必須使用eval(),你 可以考慮使用new Function()代替。 6.編碼規(guī)范 建立和遵循編碼規(guī)范是很重要的, 這讓你的代碼保持一致性、可預(yù)測、更易于閱讀和理解。一個(gè)新的開發(fā)者加入這個(gè)團(tuán)隊(duì)可以通讀規(guī)范,理解其它團(tuán)隊(duì)成員書寫的代碼,更快上手干活。 7.縮進(jìn) 8. 花括號(hào) 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)分號(hào)分開后的的部分:如for (var i = 0; i 10; i += 1) .nfor循環(huán)中初始化的多變量(i和max):for (var i = 0, max = 10; i 2)條件分支時(shí),使用switch優(yōu)于if:switch分支選擇的效率高于if,在IE下尤為明顯。4分支的測試,IE下switch的執(zhí)行時(shí)間約為if的一半。 使用三目運(yùn)算符替代條件分支。 10.縮短否定檢測縮短否定檢測雖然這些都正確,但用邏輯非操作符來操作也有同樣的效果: 11.避免全局查找避免全局查找在一個(gè)函數(shù)中會(huì)用到全局對象存儲(chǔ)為局部變量來減少全局查找,因

溫馨提示

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

評論

0/150

提交評論