国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

編寫更魯棒的JavaScript代碼:7個優秀實踐

新聞 前端
根據我頭兩年接觸JavaScript的經歷,如果你是一名JavaScript新手,可能會對這部分有些陌生。

[[316169]]

來源:Pexels

1. 編寫構造函數時,在 .prototype上添加方法

根據我頭兩年接觸JavaScript的經歷,如果你是一名JavaScript新手,可能會對這部分有些陌生。

(請記住,這并不適用于類,因為類已經將方法附加到它們的prototype上。)

以下是構造函數的一個示例:

  1. functionFrog(name, gender)  { 
  2.   this.name= name 
  3.   this.gender= gender 
  4. Frog.prototype.leap=function(feet) { 
  5.   console.log(`Leaping ${feet}ft into the  air`) 

為什么不像以下示例一樣,直接附加leap方法呢?

  1. functionFrog(name, gender)  { 
  2.   this.name= name 
  3.   this.gender= gender 
  4.   this.leap=function(feet) { 
  5.     console.log(`Leaping ${feet}ft into the  air`) 
  6.   } 

當把方法直接添加到prototype時,它們將在構造函數創建的所有實例之間共享。

換句話說,使用上個例子,如果創建三個獨立的 Frog (從 this.leap = function() {...}),然后以創建三個獨立的副本結束。這是一個問題,因為leap方法總是保持不變,不需要在實例上建立自己的副本。

最終導致本可以避免的性能下降。this.name 和this.gender屬性需要在實例上定義,因為現實生活中,frog可能有自己的名字和性別,所以才在實例級別上創建它們。

這里是流行的request 包使用這種方法的一個示例(在GitHub上)。

2. 使用TypeScript

TypeScript不僅能為類型安全提供強大防御,還能幫助預防錯誤,已經在JavaScript社區中得到了廣泛應用。

使用TypeScript能使編譯器在代碼運行之前對潛在的錯誤進行監測并顯示警告。

但這還遠不能解釋為什么TypeScript可以適用于任何情況。TypeScript最好的一點是允許在主流瀏覽器支持之前使用JavaScript中的新特征,因為這些特征被編譯成更早期的JavaScript版本,因此能在舊版本的瀏覽器中運行。

3. 編寫測試

如果要認真處理一個項目,必須使用測試,這樣應用程序才更能夠更加可預測、少出錯、并靈活應對未來的變化。換句話說,如果打算做一個經得起時間考驗的項目,沒有比在整個代碼中建立測試更好的方法。在代碼中投入的測試越多,將其應用于生產環境后,對它的信心也會越多。

測試最好的部分是什么?是能捕捉錯誤,使其無從出現——有人不想要那種能力嗎?我確定我想要。這就是我在項目中寫單元測試的原因。

[[316170]]

來源:Pexels

4. 使用JSON.parse或JSON.stringify時,務必考慮使用 try/catch

JavaScript中,當把JSON作為輸入傳遞給JSON.parse時,需要一個正確格式的JSON作為第一個參數。如果格式不正確,會提示JSON解析錯誤。

來自JSON解析錯誤的危險是接受無效的JSON會導致應用程序崩潰。最近我們的一個web項目失敗了,因為另一個內置程序包沒有在try/catch里安裝JSON.parse 。最終導致了web頁面失效,而且由于JavaScript運行時被破壞,除非內置程序包修復它,否則無法修正錯誤。

  1. SyntaxError: Unexpected token }in JSON at position 107 

不應總是期望有效的JSON輸入,因為它會收到如“>”的奇怪字符,這在今天是很常見的。

5. 使用常規的.type屬性進行區分

這個方法很棒,得到了廣泛使用。React開發人員可能每天都能看到這種做法,特別是使用Redux工作時。

使用類似方法也能使開發流程變得無比簡單,因為它甚至可以很好的記錄自己。

  1. functioncreateSpecies(type, name,  gender) { 
  2.   if (type ==='frog') { 
  3.     returncreateFrog(name, gender) 
  4.   } elseif (type ==='human') { 
  5.     returncreateHuman(name, gender) 
  6.   } elseif (type == undefined) { 
  7.     thrownewError('Cannot create  a species with an unknown type'
  8.   } 
  9. const myNewFrog =createSpecies('frog''sally''female'

6. 使用工廠函數(factory function)

如果你不知道什么是工廠函數,那么它就是一個返回對象的函數(它既不是類,也不是構造函數)。通過這個簡單概念,就可以利用JavaScript及其特征來創建強大健壯的應用程序。

必須知道,當函數被new關鍵字調用時,該函數就不再是工廠函數了。

為什么要用工廠函數?

使用工廠函數可以輕松的生成對象實例,且無需涉及類或new關鍵字。

其本質上意味著,它們最終會被當做函數來對待,即可用于組合對象、函數,甚至Promise函數。這表明可以將工廠函數混合搭配,以創建一個升級版工廠函數,然后繼續和別的函數或對象組合創建成更強的工廠函數。其可能性是無窮無盡的。

考慮到這一點,將其與好的代碼實踐相結合,它便開始大放光彩了。

以下是工廠函數的一個簡單示例:

  1. functioncreateFrog(name) { 
  2.   const children = [] 
  3.   return { 
  4.     addChild(frog) { 
  5.       children.push(frog) 
  6.     }, 
  7.   } 
  8. const mikeTheFrog =createFrog('mike'

當使用足夠多的工廠函數后,會意識到工廠函數比類構造函數有更強的可重用性。這減少了代碼量,縮短了代碼重構時間(因為工廠函數最終會返回任意對象),縮短了從一個代碼到另一個代碼的管理時間。

[[316171]]

來源:Pexels

7. 使函數盡可能的簡單

眾所周知,在JavaScript中很可能有同時做很多事情的大型函數。

編程新手可能覺得這是一件好事——之前當我寫了很大篇幅可以工作的代碼后,我的自我感覺非常好。這對我來說很重要,并給予我很大信心。畢竟它能正常運行,我就把自己的代碼有多么冗長這件事拋之腦后了。天哪,當時太幼稚了。

如果想寫更易維護的、簡單的、少出錯的代碼,最好使它盡量簡潔短小。代碼越簡潔,單獨測試也會越容易。

如果你更喜歡函數式編程范式,這一點尤其重要。函數執行一件事就應該把它做好,這是常識。

希望對你有用,獲得更完美的JavaScript的最佳實踐。

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2014-08-19 09:39:46

程序員

2021-05-26 08:50:37

JavaScript代碼重構函數

2023-10-10 10:57:12

JavaScript代碼優化

2020-02-25 15:27:37

JavaScriptTypeScript瀏覽器

2021-12-04 23:10:02

Java代碼開發

2023-03-15 15:54:36

Java代碼

2022-08-28 19:03:18

JavaScript編程語言開發

2023-04-14 08:10:59

asyncawait

2014-07-29 13:55:10

程序員代碼

2024-06-18 09:43:26

2019-09-17 09:44:45

DockerHTMLPython

2023-01-27 14:53:03

2011-08-04 13:58:45

JavaScript

2020-02-07 10:46:43

多云云計算混合云

2023-07-04 15:56:08

DevOps開發測試

2022-11-28 23:48:06

JavaScript編程語言技巧

2020-06-01 09:40:06

開發ReactTypeScript

2022-08-19 09:01:59

ReactTS類型

2016-11-29 13:31:52

JavaScriptsetTimeout定時執行

2020-08-06 16:34:48

Python開發工具
點贊
收藏

51CTO技術棧公眾號

狠狠97人人婷婷五月| 久久精品国产99久久| 亚洲小说欧美激情另类| 美女一级全黄| 亚洲第一av网站| 精品动漫3d一区二区三区免费版| 搞av.com| 精品99999| 午夜精品久久久久99热蜜桃导演| 国产精品久久..4399| 激情久久婷婷| 嫩草影院2018| 久精品免费视频| 国产一区三区三区| 老司机在线视频二区| 99九九电视剧免费观看| 亚洲精品国产精华液| 久久这里只有精品一区二区| 国产精品www在线观看| 日韩精品中文字幕在线播放| 国产三级视频在线| 午夜精品福利电影| 26uuu色噜噜精品一区二区| 国产调教在线| youjizz.com亚洲| 亚洲国产精品美女| 国产精品一二三区| 亚洲一区av| 久久中文精品视频| 国产69精品久久久久毛片| 亚洲女同av| 精品无码一区二区三区在线| 九九热精品视频| 18涩涩午夜精品.www| 婷婷亚洲图片| 在线视频国产区| 美女黄视频在线观看| 中文字幕一区二区三区5566| 欧美性色综合网| 男女视频在线观看| 欧美日韩一区二 | 一本—道久久a久久精品蜜桃| 久久综合久久综合亚洲| 一级片免费视频| 91色视频在线观看| 亚洲另类xxxx| 欧美性xxxx极品hd满灌| 韩国成人福利片在线播放| 国产乱码精品一区二区三区亚洲人 | 欧美日韩国产一区二区| 精东粉嫩av免费一区二区三区| 999在线精品| av小说在线播放| 羞羞小视频视频| wwwwww欧美| 91在线色戒在线| 色多多国产成人永久免费网站 | 国产一区在线观看麻豆| 久久亚洲影视| 一区二区三区日本视频| 日本在线视频中文有码| 嫩草嫩草嫩草嫩草| 亚洲熟妇无码一区二区三区导航| 亚洲一区二区三区成人在线视频精品| 亚洲国产精品va在线看黑人| 欧美日韩亚洲一区二区三区| 2020国产精品| 国产电影一区二区三区| 老**午夜毛片一区二区三区| 九一亚洲精品| 青娱乐极品盛宴一区二区| 最近高清中文在线字幕在线观看| 色偷偷免费视频| 国产视频一区二区三区在线播放 | 欧美情侣在线播放| 狠狠综合久久| 欧美大人香蕉在线| 超碰成人在线观看| 国产精品一区二区精品视频观看 | 欧美a在线视频| 色哟哟免费网站| 91网站在线观看免费| 乱子伦一区二区| av日韩在线看| 丝袜老师办公室里做好紧好爽| 亚洲熟妇av日韩熟妇在线| 五十路熟女丰满大屁股| 成年人看的毛片| av在线无限看| 精精国产xxxx视频在线动漫| 国产羞羞视频| 浓精h攵女乱爱av| 欧美又粗又长又爽做受| 欧美 日韩 国产在线观看| 男女啪啪免费视频网站| 五月丁香综合缴情六月小说| 精品视频在线观看一区| 哪个网站能看毛片| 成人免费在线小视频| 日本a级片免费观看| 美日韩黄色片| 国产剧情在线| 成人影院www在线观看| 超碰超碰人人人人精品| 伦一区二区三区中文字幕v亚洲| 色在线中文字幕| 成人黄色91| 国产福利资源一区| 另类图片第一页| 亚洲影院免费| 99久久国产免费看| 亚洲图片欧美视频| 亚洲欧洲日产国码av系列天堂| 亚洲精品成人网| 国产精品欧美久久久| 秋霞久久久久久一区二区| 亚洲老女人av| 国产va在线视频| 狠狠色狠狠色综合婷婷tag| 天天久久夜夜| 国产主播一区二区| 久久美女高清视频| 欧美一卡二卡三卡| 韩国三级电影久久久久久| 亚洲va欧美va国产综合剧情 | 亚洲第一精品夜夜躁人人躁| 中文精品99久久国产香蕉| 精品一卡二卡三卡四卡日本乱码 | 欧美一区2区三区4区公司二百| 成人网18免费网站在线| 国产一区高清| 国产在线成人| 中文字幕亚洲成人| 久久亚洲精品网站| 久久99精品久久久水蜜桃| 人人超碰在线| 亚洲色图美女| 91社区在线播放| 日韩精品视频在线观看网址| 国产精品免费视频xxxx| 黄色在线视频网| 欧美网站免费| 91在线视频观看| 久久伊人精品天天| 91免费国产精品| 亚洲欧美电影| 国产丶欧美丶日本不卡视频| 国产视频精品自拍| 在线视频不卡国产| 中文在线资源| 99精品黄色片免费大全| 主播福利视频一区| 无需播放器的av| 国产欧美日韩在线一区二区 | 国产精品综合色区在线观看| 欧美日韩dvd在线观看| 久久riav| 极品美鲍一区| 久久毛片高清国产| 国产91色在线免费| 绯色av一区二区| 999亚洲国产精| 亚洲国产三级网| 男人天堂网视频| 国产精品午夜一区二区三区| 欧美日韩综合在线免费观看| 韩国成人一区| 浪潮色综合久久天堂| av激情综合网| 亚洲自拍偷拍区| 免费成人在线电影| 欧美国产欧美综合| 97在线看福利| av男人的天堂在线| 成人手机在线视频| 欧美有码在线视频| 永久免费av在线| 久久午夜色播影院免费高清| 一区二区三区欧美日| 欧美最猛性xxxx| 成人精品福利| 成人在线视频一区| 97久久夜色精品国产九色| 日韩大片欧美大片| 国产精品欧美一级免费| 91最新在线免费观看| 在线天堂新版最新版在线8| 中文字幕久久午夜不卡| 日韩中文不卡| 亚洲精华一区二区三区| 欧美成人a∨高清免费观看| 美女网站色免费| 久久精品久久精品| 91精品在线观| 精品视频在线播放一区二区三区| 欧美久久久久免费| 无限国产资源| 国产日韩精品一区| 老司机午夜网站| 卡一卡二国产精品|