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

四個(gè)編寫JavaScript代碼的關(guān)鍵原則

開(kāi)發(fā) 前端
JavaScript 是一種非常靈活的編程語(yǔ)言,您可以通過(guò)多種不同的方式實(shí)現(xiàn)您的需求。但是遵循一些原則和技巧可以使您的代碼更具可讀性和效率。

1、以強(qiáng)類型語(yǔ)言的風(fēng)格編寫代碼

JavaScript 是一種弱類型編程語(yǔ)言,其中變量在語(yǔ)法上可以具有不同類型的值。但是為了提高編譯性能并使您的代碼更容易被其他程序員閱讀,建議您以強(qiáng)類型風(fēng)格編寫代碼。

1)、定義變量時(shí)應(yīng)指定數(shù)據(jù)類型

錯(cuò)誤代碼:

上述代碼中的變量缺少類型信息,導(dǎo)致其他程序員難以理解代碼或 JavaScript 解釋器無(wú)法優(yōu)化。

好代碼:

2)、不要隨意改變變量的類型

錯(cuò)誤代碼:

earning開(kāi)始是一個(gè)整數(shù),然后變成一個(gè)字符串。如果其他人需要閱讀或修改這段代碼,他或她必然會(huì)對(duì)代碼產(chǎn)生懷疑,甚至?xí)懗鲥e(cuò)誤的代碼。

同時(shí),像 V8 這樣的引擎中的 JavaScript 代碼被轉(zhuǎn)換為字節(jié)碼然后執(zhí)行,字節(jié)碼中的數(shù)據(jù)類型是確定的。如果我們?cè)?JavaScript 代碼中更改變量的數(shù)據(jù)類型,編譯器必須做一些額外的處理,這會(huì)降低程序的性能。

好代碼:

當(dāng)你需要轉(zhuǎn)換一個(gè)值的類型時(shí),使用一個(gè)新的變量。

3)、函數(shù)的返回類型應(yīng)該是固定的

錯(cuò)誤代碼:

此函數(shù)可能返回整數(shù)或字符串。盡管這符合 JavaScript 語(yǔ)法,但調(diào)用函數(shù)的人很難直接使用 getPrice() 的結(jié)果進(jìn)行算術(shù)運(yùn)算。

好代碼:

我們可以在函數(shù)注釋中同意返回 -1 表示參數(shù)無(wú)效,這允許調(diào)用者以統(tǒng)一的方式處理函數(shù)的結(jié)果。

2、減少不必要的范圍查找

JavaScript 支持嵌套作用域和作用域鏈,這使我們能夠編寫高效的代碼。但是錯(cuò)誤地使用這些語(yǔ)法會(huì)弄亂代碼。

1)、如果沒(méi)有必要,不要將你的代碼暴露在全局范圍內(nèi)

錯(cuò)誤代碼:

首先,script標(biāo)簽中的所有變量都在全局范圍內(nèi),不同的script標(biāo)簽中的代碼可能是由不同的程序員開(kāi)發(fā)的,可能會(huì)造成命名沖突。

其次,上面第二行代碼,在使用元素變量的時(shí)候,在全局范圍內(nèi)尋找元素變量,降低了程序的性能。

好代碼:

這樣,我們使用閉包來(lái)隱藏元素變量,這樣不會(huì)污染全局作用域,在局部作用域中查找變量也更快。

當(dāng)然,如果您確定將在其他地方使用元素變量,您仍然應(yīng)該在全局范圍內(nèi)公開(kāi)它。

2)、不要濫用閉包

JavaScript 通過(guò)作用域鏈查找變量,如果在當(dāng)前作用域中找不到變量,JavaScript 引擎會(huì)在當(dāng)前作用域的父作用域中查找,然后逐級(jí)查找全局作用域。所以閉包嵌套得越深,變量查找所需的時(shí)間就越長(zhǎng)。

錯(cuò)誤代碼:

在 process 函數(shù)內(nèi)部使用了上一級(jí)作用域變量 count,這使得 JavaScript 引擎在調(diào)用 process 函數(shù)時(shí)查找 count 變量更加耗時(shí)。

同時(shí),如果作用域嵌套多層,process和count之間有幾十行代碼,在讀取process函數(shù)時(shí)很容易混淆count變量。

更好的方法是將計(jì)數(shù)作為參數(shù)傳遞給處理。

好代碼:

3、使用ES6特性簡(jiǎn)化代碼

ES6 已經(jīng)存在多年,現(xiàn)在非常兼容,我們應(yīng)該積極擁抱 ES6,讓代碼更加簡(jiǎn)潔優(yōu)雅。

1)、使用箭頭函數(shù)代替普通函數(shù)作為回調(diào)函數(shù)

如果您不需要考慮此綁定,最好使用箭頭函數(shù)而不是普通函數(shù)作為回調(diào)。

錯(cuò)誤代碼:

好代碼:

2)、使用類

使用傳統(tǒng)的原型語(yǔ)法會(huì)將構(gòu)造函數(shù)代碼與原型方法代碼分離,無(wú)法有效組織代碼。

錯(cuò)誤代碼:

使用類使代碼更簡(jiǎn)單、更容易理解,而使用類還可以輕松實(shí)現(xiàn)繼承的靜態(tài)成員函數(shù)。

好代碼:

3)、使用模板字符串

模板字符串用反引號(hào) () 字符而不是雙引號(hào)或單引號(hào)括起來(lái)。

錯(cuò)誤代碼:

在模板字符串中,我們可以使用任何字符而不是轉(zhuǎn)義字符,如 \n。

同時(shí),我們可以直接使用表達(dá)式 ${} 來(lái)插入變量,而不是拆分字符串并使用 + 來(lái)連接。

好代碼:

這顯然更容易閱讀。

4)、使用默認(rèn)參數(shù)

在 ES5 中,如果我們想給函數(shù)的參數(shù)一個(gè)默認(rèn)值,我們可以這樣寫:

在 ES6 中,我們可以用一種更簡(jiǎn)單、更易讀的方式編寫:

5)、使用塊范圍變量

如果我們希望控制臺(tái)以 100 毫秒的間隔打印出 0、1、2、…10,反過(guò)來(lái),有些人可能會(huì)編寫如下代碼:

for(var index = 0; index <= 10; index++){
setTimeout(() => console.log(index), 100)
}

不幸的是,上面的代碼不能滿足要求。因?yàn)?var 聲明的變量是在全局范圍內(nèi),所以當(dāng) setTimeout 回調(diào)函數(shù)執(zhí)行時(shí),index 的值已經(jīng)變成了 11。

ES5 中的一種解決方案是使用閉包:

for(var index = 0; index <= 10; index++){
(function(archivedIndex){
setTimeout(() => console.log(archivedIndex), 100)
})(index)
}

這里我們通過(guò)閉包保存索引值,這樣每次執(zhí)行setTimeout都會(huì)找到正確的索引值。

但是上面的寫法很麻煩,很難看懂,更好的方法是使用 let 聲明塊范圍的變量。

for(let index = 0; index <= 10; index++){
setTimeout(() => console.log(index), 100)
}

只需更改三個(gè)字符即可完成要求,非常簡(jiǎn)單、方便、易讀。

4、語(yǔ)法風(fēng)格

1)、用三元運(yùn)算符替換簡(jiǎn)單的 if-else

一般來(lái)說(shuō),三元運(yùn)算符的語(yǔ)法如下:

condition ? expression_1 : expression_2;

條件是一個(gè)表達(dá)式,計(jì)算結(jié)果為布爾值,真或假。如果條件為真,則三元運(yùn)算符返回表達(dá)式_1,否則返回表達(dá)式_2。

錯(cuò)誤代碼:

好的代碼:

2)、避免==

== 有很多特殊的機(jī)制,過(guò)多地使用 == 會(huì)使我們的代碼更難理解。我們可以顯式轉(zhuǎn)換數(shù)據(jù)類型以使代碼更易于理解。

錯(cuò)誤代碼:

好的代碼:

責(zé)任編輯:龐桂玉 來(lái)源: 大前端私房菜
相關(guān)推薦

2021-10-29 16:28:03

零信任網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2021-11-15 10:10:20

安全零信任數(shù)據(jù)

2023-05-04 09:02:56

2021-09-26 13:55:33

5G切片網(wǎng)絡(luò)切片5G

2023-02-06 16:33:33

流式數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)

2022-01-12 15:50:24

JavaScript開(kāi)發(fā)循環(huán)

2022-06-27 23:31:01

JavaScript框架開(kāi)發(fā)

2021-08-23 10:37:14

Javascript 機(jī)器學(xué)習(xí)阿里云

2022-02-08 23:16:34

元宇宙技術(shù)VR/AR

2024-06-12 13:51:12

2022-04-12 14:07:40

流程工程軟件交付敏捷團(tuán)隊(duì)

2009-03-13 09:39:34

JavaScript函數(shù)調(diào)用規(guī)則

2023-01-28 09:52:39

2023-04-11 09:39:47

2009-03-11 13:38:37

構(gòu)造塊ActivityIntent Rece

2021-10-11 09:30:21

零信任網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2019-03-22 08:25:47

沙箱網(wǎng)絡(luò)安全惡意軟件

2023-08-02 16:14:51

2022-12-07 10:06:19

2019-12-30 12:32:25

網(wǎng)絡(luò)安全四大關(guān)鍵點(diǎn)智慧城市
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

性视频在线播放| √天堂资源地址在线官网| 91九色精品| 日韩精品一区二区三区在线观看| 国产福利视频在线播放| 91精品国产乱码久久久久久| 日日狠狠久久偷偷四色综合免费| 国产在线制服美女| 成人免费精品视频| 久久国产精品亚洲va麻豆| 免费看成人人体视频| 精品亚洲一区二区三区| 精品三级久久久久久久电影聊斋| 久久精品夜色噜噜亚洲a∨| 色噜噜一区二区| 外国成人免费视频| 午夜精品免费视频| 成人在线爆射| 欧美精品一区二区在线观看| 黄色大片在线免费观看| 亚洲精品伦理在线| 97视频在线免费播放| 国产在线观看免费一区| 久久亚洲高清| 欧美一区国产在线| 国产精品美女久久久免费| 99久久婷婷国产综合精品青牛牛| 一级做a爰片久久毛片美女图片| 国产丝袜在线观看视频| 91精品国产综合久久久蜜臀粉嫩 | 亚洲综合色视频| 激情婷婷综合网| 国产一区二区三区免费| 3p在线观看| 国产98色在线|日韩| 裸体网站视频| 91视频免费看| 中文字幕中文字幕在线中一区高清| 日韩在线观看| 国产91精品青草社区| 九色精品蝌蚪| 自拍偷拍免费精品| 范冰冰一级做a爰片久久毛片| 日韩欧美视频在线| 尤物视频在线看| 免费h在线看| 久久精品国产亚洲a| 九九九九久久久久| 午夜宅男久久久| 日韩精品无码一区二区三区| 国产情侣一区| 久久综合福利| 日韩av一二三| 久久观看最新视频| 国产成人精品一区二区三区四区| 93在线视频精品免费观看| 136fldh精品导航福利| a视频在线观看| 亚洲最大成人综合| 欧美一区二区| 国产精品一区二区三区久久久| av成人综合| 秋霞成人午夜鲁丝一区二区三区| 国产精品一区二区三区av麻| 国产欧美一区二区三区视频 | 精品久久久久久久久久久院品网| 日韩特级毛片| 亚洲色图国产精品| 亚洲三级电影| 国产精品69av| 欧美精品偷拍| 亚洲人成网站在线播放2019| 91免费观看视频在线| 日本成在线观看| 欧美三级三级三级| 超碰国产一区| 欧美一级在线亚洲天堂| 色网站免费在线观看| 欧美午夜精品在线| 黄色精品一区| 中文字幕成人一区| 成人欧美一区二区三区| 国产一区二区三区福利| 欧美成人video| 蜜桃一区二区三区| 在线视频日韩一区| 久久久久久久久久久亚洲| 99re6热只有精品免费观看| 国产精品日韩av| 久久这里只有| 国产精品视频分类| 精品视频一区二区三区免费| 在线一区视频观看| 国产一区二区色| 日韩在线视频网站| 亚洲综合另类| av资源一区二区| 欧美性xxxx极品hd满灌| 欧美日韩色网| 日本不卡一区| 成人免费观看a| 日一区二区三区| 男人搞女人网站| 欧美xxxx少妇| 欧美日韩一区二区免费在线观看| mm1313亚洲国产精品美女| 欧美激情三级免费| 国产精品亚洲欧美| 国产超碰在线播放| 欧美疯狂性受xxxxx喷水图片| 136导航精品福利| 日韩在线第一区| 国产精品传媒视频| 黄频免费在线观看| 成人情趣片在线观看免费| 丰满亚洲少妇av| 一级视频在线观看视频在线啦啦| 综合136福利视频在线| 五月天色一区| av高清不卡| 91精品国产高清久久久久久91裸体| 成人性生交大片免费看中文网站| 国产乱子伦三级在线播放| 色琪琪综合男人的天堂aⅴ视频| 欧美一区91| 男女午夜网站| 亚洲欧洲在线视频| 国产欧美日韩一区二区三区在线| 免费一区二区三区在线观看| 国产欧美日韩在线播放| 一本色道久久综合亚洲二区三区| 亚洲免费在线观看| 深夜视频一区二区| 欧美凹凸一区二区三区视频| 亚洲国产精品久久人人爱| 国产精品igao视频网网址不卡日韩 | 国产伦久视频在线观看| 成人永久免费视频| 亚洲毛片在线| 日本成人免费| 精品国产一区二区三区久久影院| 欧美裸体在线版观看完整版| 91香蕉视频污版| 色偷偷91综合久久噜噜| 奇米影视7777精品一区二区| 日韩av地址| 国产精品久久久精品| 欧美激情中文不卡| 高清电影一区| 亚洲自拍偷拍二区| 日韩精品一区二区在线| 国产欧美不卡| 黄在线免费看| 久久久影院一区二区三区| 精品污污网站免费看| 午夜电影亚洲| 国产一二三在线观看| 国产精品电影网| 亚洲一级电影视频| 久久久久久久久99精品大| 四虎在线观看| 国产视频福利一区| 亚洲精品国产无套在线观| 亚洲国产精品嫩草影院久久av| 午夜网站在线观看| 国产精品扒开腿做爽爽爽视频| 一级女性全黄久久生活片免费| 精品免费在线| 青青草免费在线视频| 精品乱码一区| 亚洲激情视频在线播放| 国产成人免费在线视频| 日韩高清在线观看一区二区| 久热精品在线播放| 国产精品亚洲网站| 欧美性猛交xxxxxx富婆| 免费人成网站在线观看欧美高清| 亚洲电影有码| 妞干网在线视频| 91久久嫩草影院一区二区| 精品婷婷伊人一区三区三| 日本亚洲免费观看| 999精品嫩草久久久久久99| 精品剧情v国产在线观看| 国产厕所精品在线观看| 亚洲成人黄色在线观看| 成人晚上爱看视频| 草莓视频一区二区三区| 超碰96在线| 精品日本一区二区三区在线观看| 亚洲精品99999| 久久久亚洲国产美女国产盗摄| 九九综合在线| 91麻豆免费在线视频| 黄色免费福利视频| 成人精品一区二区三区| 亚洲男人天堂视频| 夜夜亚洲天天久久| 老司机午夜精品视频在线观看| 高清一区二区三区av|