自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

寫了這么多年 JavaScript ,竟然還不知道這些技巧?

開發(fā) 前端
不少人有五年的 JavaScript 經(jīng)驗,但實際上可能只是一年的經(jīng)驗重復(fù)用了五次而已。完成同樣的邏輯和功能,有人可以寫出意大利面條一樣的代碼,也有人兩三行簡潔清晰的代碼就搞定了。

 [[380148]]

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

1. 簡化條件表達式

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

  1. // 太長的邏輯表達式 
  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太常用了,以至于很多人都忘了其實還有其他方式來判斷條件。比如簡單的變量賦值,完全沒必要用這種冗長的語句,一行表達式就搞定了:

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

三元表達式可以做復(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. 判空并賦默認值

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

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

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

for 循環(huán)是最基本的,但是有點繁瑣。可以用for...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. 簡化多行字符串拼接

如果一個字符串表達式過長,我們可能會拆成多行拼接的方式。不過隨著 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ù)真是個好東西,當函數(shù)簡單到只需要返回一個表達式時,用箭頭函數(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ù)運算

能省則省,低碳環(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譯站公眾號。

 

責任編輯:武曉燕 來源: 1024譯站
相關(guān)推薦

2020-07-21 18:37:14

代碼條件變量

2022-05-05 12:02:45

SCSS函數(shù)開發(fā)

2018-09-02 15:43:56

Python代碼編程語言

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2022-03-03 07:00:43

Mybatiswhere標簽

2020-12-14 07:51:16

JS 技巧虛值

2021-12-27 14:12:44

iOS蘋果系統(tǒng)

2017-10-16 13:30:28

windows 10技巧輸入法

2018-07-10 11:33:58

計算器iPhone刪除

2015-07-13 08:49:54

2020-10-28 08:06:09

Vue3框架數(shù)據(jù)

2018-10-06 21:51:37

代碼SOLID編程

2023-11-13 08:49:54

2021-10-19 14:49:49

CSS前端

2016-07-22 17:55:07

云計算

2021-02-26 08:32:28

RocketMQ阿里云

2021-01-28 10:04:40

JavaScript開發(fā)技術(shù)

2023-07-07 14:47:46

JavaScript技巧

2018-10-07 06:30:40

代碼設(shè)計模式面向?qū)ο笤瓌t

2022-09-19 18:32:22

函數(shù)編程語言
點贊
收藏

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