日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
寫了這么多年 JavaScript ,竟然還不知道這些技巧?

不少人有五年的 JavaScript 經(jīng)驗,但實際上可能只是一年的經(jīng)驗重復(fù)用了五次而已。完成同樣的邏輯和功能,有人可以寫出意大利面條一樣的代碼,也有人兩三行簡潔清晰的代碼就搞定了。簡潔的代碼不但方便閱讀,還能減少復(fù)雜邏輯和出錯的可能性。本文就介紹一些常用的JavaScript簡化技巧,日常開發(fā)都用得上。

1. 簡化條件表達(dá)式

經(jīng)常碰到這種情況,要判斷某個變量是否為指定的某些值,用常規(guī)的邏輯表達(dá)式會很長。我的做法是把這些值放進(jìn)數(shù)組里:

 
 
 
 
  1. // 太長的邏輯表達(dá)式 
  2. if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') { 
  3.     //其他邏輯 
  4. // 簡寫 
  5. if (['abc', 'def', 'ghi', 'jkl'].includes(x)) { 
  6.    //其他邏輯 

2. 簡化 if ... else

if...else太常用了,以至于很多人都忘了其實還有其他方式來判斷條件。比如簡單的變量賦值,完全沒必要用這種冗長的語句,一行表達(dá)式就搞定了:

 
 
 
 
  1. // 新手的寫法 
  2. let test= boolean; 
  3. if (x > 100) { 
  4.     test = true; 
  5. } else { 
  6.     test = false; 
  7. // 簡寫表達(dá)式 
  8. let test = (x > 10) ? true : false; 
  9. // 更直接的 
  10. let test = x > 10; 
  11. console.log(test); 

三元表達(dá)式可以做復(fù)雜的條件分支判斷,不過犧牲了一些可讀性:

 
 
 
 
  1. let x = 300, 
  2. let test2 = (x > 100) ? 'greater 100' : (x < 50) ? 'less 50' : 'between 50 and 100'; 
  3. console.log(test2); // "greater than 100" 

3. 判空并賦默認(rèn)值

Code Review 的時候我經(jīng)常看到這樣的代碼,判斷變量不是null,undefined,''的時候賦值給第二個變量,否則給個默認(rèn)值:

 
 
 
 
  1. if (first !== null || first !== undefined || first !== '') { 
  2.     let second = first; 
  3. // 簡寫 
  4. let second = first || ''; 

4. 簡寫循環(huán)遍歷

for 循環(huán)是最基本的,但是有點(diǎn)繁瑣??梢杂胒or...in、for...of或者forEach代替:

 
 
 
 
  1. // Longhand 
  2. for (var i = 0; i < testData.length; i++) 
  3.  
  4. // Shorthand 
  5. for (let i in testData) or  for (let i of testData) 

數(shù)組遍歷:

 
 
 
 
  1. function testData(element, index, array) { 
  2.   console.log('test[' + index + '] = ' + element); 
  3.  
  4. [11, 24, 32].forEach(testData); 
  5. // 打印輸出: test[0] = 11, test[1] = 24, test[2] = 32 

4. 簡化 switch

這個技巧也很常用,把switch 轉(zhuǎn)換成對象的key-value形式,代碼簡潔多了:

 
 
 
 
  1. // Longhand 
  2. switch (data) { 
  3.   case 1: 
  4.     test1(); 
  5.   break; 
  6.  
  7.   case 2: 
  8.     test2(); 
  9.   break; 
  10.  
  11.   case 3: 
  12.     test(); 
  13.   break; 
  14.   // And so on... 
  15.  
  16. // Shorthand 
  17. var data = { 
  18.   1: test1, 
  19.   2: test2, 
  20.   3: test 
  21. }; 
  22.  
  23. data[anything] && data[anything](); 

5. 簡化多行字符串拼接

如果一個字符串表達(dá)式過長,我們可能會拆成多行拼接的方式。不過隨著 ES6 的普及,更好的做法是用模板字符串:

 
 
 
 
  1. //longhand 
  2. const data = 'abc abc abc abc abc abc\n\t' 
  3.     + 'test test,test test test test\n\t' 
  4. //shorthand 
  5. const data = `abc abc abc abc abc abc 
  6.          test test,test test test test` 

6. 善用箭頭函數(shù)簡化 return

ES6 的箭頭函數(shù)真是個好東西,當(dāng)函數(shù)簡單到只需要返回一個表達(dá)式時,用箭頭函數(shù)最合適不過了,return都不用寫:

 
 
 
 
  1. Longhand: 
  2. //longhand 
  3. function getArea(diameter) { 
  4.   return Math.PI * diameter 
  5. //shorthand 
  6. getArea = diameter => ( 
  7.   Math.PI * diameter; 

7. 簡化分支條件語句

又是你,if...else if...else!跟switch類似,也可以用key-value形式簡化:

 
 
 
 
  1. // Longhand 
  2. if (type === 'test1') { 
  3.   test1(); 
  4. else if (type === 'test2') { 
  5.   test2(); 
  6. else if (type === 'test3') { 
  7.   test3(); 
  8. else if (type === 'test4') { 
  9.   test4(); 
  10. } else { 
  11.   throw new Error('Invalid value ' + type); 
  12. // Shorthand 
  13. var types = { 
  14.   test1: test1, 
  15.   test2: test2, 
  16.   test3: test3, 
  17.   test4: test4 
  18. }; 
  19.  
  20. var func = types[type]; 
  21. (!func) && throw new Error('Invalid value ' + type); func(); 

8. 重復(fù)字符串 N 次

有時候出于某種目的需要將字符串重復(fù) N 次,最笨的方法就是用for循環(huán)拼接。其實更簡單的方法是用repeat:

 
 
 
 
  1. //longhand  
  2. let test = '';  
  3. for(let i = 0; i < 5; i ++) {  
  4.   test += 'test ';  
  5. }  
  6. console.log(str); // test test test test test  
  7. //shorthand  
  8. 'test '.repeat(5); 

9. 指數(shù)運(yùn)算

能省則省,低碳環(huán)保。

 
 
 
 
  1. //longhand 
  2. Math.pow(2,3); // 8 
  3. //shorthand 
  4. 2**3 // 8 

10. 數(shù)字分隔符

這是比較新的語法,ES2021 提出來的,數(shù)字字面量可以用下劃線分割,提高了大數(shù)字的可讀性:

 
 
 
 
  1. // 舊語法 
  2. let number = 98234567 
  3.  
  4. // 新語法 
  5. let number = 98_234_567 

總結(jié)

沒啥好總結(jié)的,拿去用就是了。

本文轉(zhuǎn)載自微信公眾號「1024譯站」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系1024譯站公眾號。


本文標(biāo)題:寫了這么多年 JavaScript ,竟然還不知道這些技巧?
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/cophohe.html