15個(gè)簡(jiǎn)單的JS編碼標(biāo)準(zhǔn)讓你的代碼更整潔寥闪!

編碼標(biāo)準(zhǔn)可以幫助以下方面:

保持代碼一致

易于閱讀和理解

易于維護(hù)

下面的編碼標(biāo)準(zhǔn)是我對(duì)上述幾點(diǎn)有幫助的看法太惠。

1. 比較時(shí)使用 === 代替 ==

這很重要,因?yàn)镴avaScript是一種動(dòng)態(tài)語(yǔ)言疲憋,因此使用==可能會(huì)給您帶來意想不到的結(jié)果凿渊,因?yàn)樗试S類型不同。

Fail:

if(val ==2)

Pass:

if(val ===2)

2. 永遠(yuǎn)不要使用 var缚柳,使用 let 來代替

使用let將有助于避免JavaScript中各種var引起的作用域問題埃脏。

Fail:

varmyVar =10;

Pass:

letmyVar =10;

在學(xué)習(xí)web前端的過程中,難免會(huì)遇到很多的問題秋忙,這些問題可能會(huì)困擾你許久彩掐,為此我有個(gè)web開發(fā)學(xué)習(xí)交流群(545667817),里面都是 掘金 的小伙伴灰追,并整理了一份最全面前端學(xué)習(xí)資料 ,從最基礎(chǔ)的HTML+CSS+JS 到移動(dòng)端HTML5的項(xiàng)目實(shí)戰(zhàn)的學(xué)習(xí)資料佩谷,想學(xué)習(xí)的都可以申請(qǐng)加入,大家互相學(xué)習(xí)监嗜,互相交流共同進(jìn)步谐檀,每日分享不同的學(xué)習(xí)資料!

3. 使用 const 代替 let

這阻止了開發(fā)人員嘗試更改不應(yīng)該做的事情裁奇,并且確實(shí)有助于提高可讀性桐猬。

Fail:

letVAT_PERCENT=20;

Pass:

constVAT_PERCENT =20;

4. 始終使用分號(hào)(;)

盡管這在JavaScript中是可選的,并不像其它語(yǔ)言一樣需要分號(hào)作為語(yǔ)句終止符刽肠。但是使用;有助于使代碼保持一致溃肪。

Fail:

constVAT_PERCENT =20;letamount =10returnaddVat(amount, vatPercent)

Pass:

constvatPercent =20;letamount =10;returnaddVat(amount, vatPercent);

5. JavaScript中的命名約定

let應(yīng)該使用駝峰命名免胃。

const如果在文件的頂部使用大寫的蛇形命名法。如果不在文件頂部惫撰,請(qǐng)使用駝峰命名羔沙。

class應(yīng)該是帕斯卡命名法:MyClass

functions函數(shù)應(yīng)該是駝峰命名法:myFunction

6. 拼接字符串時(shí)使用模板字符串

模板字符串中允許嵌入表達(dá)式。

Fail:

letfullName = firstName +" "+lastName;

Pass:

letfullName =`${firstName}${lastName}`;

7. 盡可能使用ES6箭頭函數(shù)

箭頭函數(shù)是編寫函數(shù)表達(dá)式的更簡(jiǎn)潔的語(yǔ)法厨钻。

Fail:

varmultiply =function(a, b){returna* b;};

Pass:

constmultiply =(a, b) =>{returna * b};

8. 始終在控制結(jié)構(gòu)周圍使用大括號(hào)

所有控制結(jié)構(gòu)都必須使用花括號(hào)(例如扼雏,if,else夯膀,for诗充,do,while等)诱建,這樣后期維護(hù)時(shí)蝴蜓,不容易出錯(cuò)。

Fail:

if(valid)doSomething();if(amount >100)doSomething();elseif(amount >200)doSomethingElse();

Pass:

if(valid) {doSomething();}if(amount >100) {doSomething();}elseif(amount >200) {doSomethingElse();}

9. 確保大括號(hào)從同一行開始俺猿,中間有空格

Fail:

if(myNumber ===0){doSomething();}

Pass:

if(myNumber ===0) {doSomething();}

10. 嘗試減少嵌套

if內(nèi)的if會(huì)變得混亂并且很難閱讀茎匠。有時(shí)你可能無法解決問題,但是可以好好卡看看代碼結(jié)構(gòu)押袍,看看是否可以改進(jìn)汽抚。

Fail:

if(myNumber >0) {if(myNumber >100) {if(!hasDiscountAlready) {returnaddDiscountPercent(0);? ? ? }else{returnaddDiscountPercent(10);? ? ? }? }elseif(myNumber >50) {if(hasDiscountAlready) {returnaddDiscountPercent(5);? ? }? }else{if(!hasDiscountAlready) {returnaddDiscountPercent(0);? ? }else{returnaddDiscountPercent(1);? ? }? }}else{error();}

Pass:

if(myNumber <=0) {returnerror;}if(!hasDiscountAlready) {returnaddDiscountPercent(0);}if(myNumber >100) {returnaddDiscountPercent(10);}if(myNumber >50) {returnaddDiscountPercent(5);}returnaddDiscountPercent(1);

通過上面的示例可以看出,減少嵌套之后伯病,會(huì)變得容易閱讀。

11. 盡可能使用默認(rèn)參數(shù)

在JavaScript中否过,如果你在調(diào)用函數(shù)時(shí)沒有傳遞參數(shù)午笛,則它的值就是undefined

Fail:

myFunction(a, b) {returna + b;}

Pass:

myFunction(a=0,b=0){returna+b;}

12.Switch語(yǔ)句應(yīng)使用break并具有default

我通常會(huì)嘗試不使用switch語(yǔ)句,但是你確實(shí)想使用它苗桂,請(qǐng)確保每個(gè)條件都break药磺,并寫了defalut。

Fail:

switch(myNumber){case10:? ? addDiscountPercent(0);case20:? ? addDiscountPercent(2);case30:? addDiscountPercent(3);}

Pass:

switch(myNumber){case10:? ? addDiscountPercent(0);break;case20:? ? addDiscountPercent(2);break;case30:? ? addDiscountPercent(3);break;default:? ? addDiscountPercent(0);break;}

13. 不要使用通配符導(dǎo)入

Fail:

import*asFoofrom'./Foo';

Pass:

importFoofrom'./Foo';

14. 使用布爾值的快捷方式

Fail:

if(isValid===true)if(isValid===false)

Pass:

if(isValid)if(!isValid)

15. 嘗試避免不必要的三元語(yǔ)句

Fail:

constboo = a ? a : b;

Pass:

const boo = a||b;

總結(jié)

任何語(yǔ)言的編碼標(biāo)準(zhǔn)都可以真正幫助提高應(yīng)用程序的可讀性和可維護(hù)性煤伟。如果你在團(tuán)隊(duì)中工作癌佩,那么一件很難的事情就是強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)。這里有一些建議可以幫助你:

代碼審查便锨,逐行Pass代碼围辙。

整理或使用某種代碼分析器

創(chuàng)建新內(nèi)容時(shí),讓你們的一位高級(jí)開發(fā)人員初始化放案,其他開發(fā)人員可以使用該代碼作為指導(dǎo)姚建。

最后:

送給每一位前端小伙伴, 有想學(xué)習(xí)web前端的,或是轉(zhuǎn)行吱殉,或是大學(xué)生掸冤,還有工作中想提升自己能力的厘托,正在學(xué)習(xí)的小伙伴歡迎加入學(xué)習(xí)(545667817)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稿湿,一起剝皮案震驚了整個(gè)濱河市铅匹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饺藤,老刑警劉巖包斑,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異策精,居然都是意外死亡舰始,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門咽袜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丸卷,“玉大人,你說我怎么就攤上這事询刹∶占担” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵凹联,是天一觀的道長(zhǎng)沐兰。 經(jīng)常有香客問我,道長(zhǎng)蔽挠,這世上最難降的妖魔是什么住闯? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮澳淑,結(jié)果婚禮上比原,老公的妹妹穿的比我還像新娘。我一直安慰自己杠巡,他們只是感情好量窘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著氢拥,像睡著了一般蚌铜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嫩海,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天冬殃,我揣著相機(jī)與錄音,去河邊找鬼叁怪。 笑死造壮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耳璧,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼成箫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了旨枯?” 一聲冷哼從身側(cè)響起蹬昌,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攀隔,沒想到半個(gè)月后皂贩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昆汹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年明刷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片满粗。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辈末,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出映皆,到底是詐尸還是另有隱情挤聘,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布捅彻,位于F島的核電站组去,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏步淹。R本人自食惡果不足惜从隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缭裆。 院中可真熱鬧键闺,春花似錦、人聲如沸幼驶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盅藻。三九已至,卻和暖如春畅铭,著一層夾襖步出監(jiān)牢的瞬間氏淑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工硕噩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留假残,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辉懒,于是被迫代替她去往敵國(guó)和親阳惹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355