成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

12 個提升 JavaScript 開發效率的實用技巧

開發 前端
如果你已經在使用其中的一些技巧,那就鞏固一下吧!需要注意的是為了兼容舊版瀏覽器,記得按需注入墊片(polyfill)。

下面列出了 12 個 JavaScript 小技巧,這些技巧可以幫助你編寫更簡潔、高效的代碼。

如果你已經在使用其中的一些技巧,那就鞏固一下吧!需要注意的是為了兼容舊版瀏覽器,記得按需注入墊片(polyfill)。

1. 空值合并運算符(??)

使用 ?? 來賦默認值,當 ?? 的左側值為 null 或者 undefined 時,?? 就會使用右側的默認值。

const placeholder = props.placeholder ?? '請輸入'
console.log(placeholder) // props.placeholder 為 null 或 undefined 時,輸出“請輸入”

?? 對比函數或解構默認值,唯一的區別在于對 null 的處理,?? 如上在面對 null 時也會使用默認值,而函數或解構默認值則會使用 null。

function foo(text = 'default') {
return text
}

let input1
console.log(input1 ?? 'default', foo(input1))
// 輸出 default default

const input2 = null
console.log(input2 ?? 'default', foo(input2))
// 輸出 default null

const input3 = 'value'
console.log(input3 ?? 'default', foo(input3))
// 輸出 value value

在項目代碼中,也會看到使用邏輯或運算符 || 來賦默認值,|| 運算符在左側值為 0、空字符串('')、NaN、false、null、undefined 等 falsy 值時,都會使用默認值。

let input1
console.log(input1 ?? 'default', input1 || 'default')
// 輸出 default default

const input2 = false
console.log(input2 ?? 'default', input2 || 'default')
// 輸出 false default

const input3 = 'value'
console.log(input3 ?? 'default', input3 || 'default')
// 輸出 value value

故推薦使用 ?? 來賦默認值,也可以使用函數或解構默認值,不過要注意 null 值,而 || 更適用于 if 等邏輯判斷。

2. 可選鏈操作符(?.)

可選鏈運算符(?.)用于訪問對象的屬性或方法,當訪問的對象或方法是 undefined 或 null,表達式會短路并計算為 undefined,而不是拋出錯誤。

const obj = {
  foo: { bar: { a: 3 } }
}
const obj2 = {}

function getA(o) {
  return o && o.foo && o.foo.bar && o.foo.bar.a
}
function getA2(o) {
  return o?.foo?.bar?.a
}

// 用 && 來獲取深層對象
console.log(getA(obj)) // 輸出3
console.log(getA(obj2)) // 輸出 undefined
console.log(getA2(obj)) // 輸出3
console.log(getA2(obj2)) // 輸出 undefined

可以看到使用可選鏈運算符(?.)在獲取對象屬性上使用會更方便。

3. 使用解構賦值

解構賦值可以快速提取對象或數組中的值,減少冗余代碼。

// 對象解構
const user = { name: 'John', age: 30 };
const { name, age } = user;
console.log(name, age); // John 30

// 數組解構
const numbers = [1, 2, 3];
const [first, second] = numbers;
console.log(first, second); // 1 2

4. 字符串方法

使用 startsWith、endsWith、includes 方法來判斷字符串是否包含某個子串。

'Hello World'.startsWith('Hello') // true
'Hello World'.endsWith('World') // true
'Hello World'.includes('World') // true

相比與 indexOf 方法,startsWith、endsWith、includes 代碼可讀性更高。

const isPython = 'Hello Python'.indexOf('Python') !== -1 // true
const isJS = 'Hello JavaScript'.includes('JavaScript') // true

5. 數組方法

使用 map、filter、some、every 等方法來操作數組。

const arr = [
  { name: '小明', age: 16 },
  { name: '張三', age: 18 },
  { name: '李四', age: 20 }
]
const ageArr = arr.map(item => item.age) // [16, 18, 20]
const adults = arr.filter(item => item.age >= 18) // [{ name: '張三', age: 18 }, { name: '李四', age: 20 }]
const hasChild = arr.some(item => item.age < 18) // true
const isAllAdults = arr.every(item => item.age >= 18) // false

相比于使用 for 循環遍歷數組來寫業務邏輯,map、filter、some、every 等方法讓你編碼更高效,同時可讀性更高。

6. 使用 Set 去重

Set 可以快速去除數組中的重復項。

const numbers = [1, 2, 2, 3, 4, 4];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4]

7. 使用 Array.from 將類數組轉換為數組

將 NodeList、arguments 等類數組對象轉換為真正的數組。

const nodeList = document.querySelectorAll('div');
const divArray = Array.from(nodeList);

8. 使用策略模式優化 if

在一些場景中,if 分支會比較多,可以使用策略模式優化。

// if 判斷
function renderSports = (sports) => {
if (sports === 'basketball') {
    return'籃球'
  } elseif (sports === 'football') {
    return'足球'
  } elseif (sports === 'tennis') {
    return'網球'
  } else {
    return'--'
  }
}

// 策略模式優化
function renderSports2 = (sports) => {
  const sportsMap = {
    basketball: '籃球',
    football: '足球',
    tennis: '網球',  
  }
  return sportsMap[sports] || '--'
}

使用策略模式優化后,可以少寫一些 if 語句,代碼也更符合設計模式。

9. 使用快速生成代碼片段

VSCode 中有提供代碼片段插件,這些插件能幫助你高效的寫代碼,當然你也可以自己編寫代碼片段。

圖片

10. Chrome DevTools 替換接口內容

當接口返回的內容無法覆蓋頁面所有展示情況時,我們可以使用 Chrome DevTools 的替換內容功能來修改接口響應,從而在不用本地模擬數據的情況下完成功能驗證。

圖片

11. 從控制臺復制長變量

Chrome 控制臺遇到內容比較長的變量時,不會直接平鋪展示全部內容,比如字符串較長時中間會顯示省略號、數組較長時會分塊展示等。如果你想復制這個內容,就會比較困難,這時可以使用 Chrome Devtools 的復制變量功能。

chrome_copy2

12. 使用 classnames 處理類名

使用 classnames 能更高效的處理類名,同時還能使類名邏輯更清晰,便于理解和維護。

// 直接處理類名
let buttonClass = 'btn';
if (isPrimary) {
  buttonClass += ' btn-primary';
}
if (isDisabled) {
  buttonClass += ' btn-disabled';
}

// 使用 classNames 處理類名
const buttonClass = classNames('btn', {
'btn-primary': isPrimary,
'btn-disabled': isDisabled,
})
責任編輯:武曉燕 來源: 栗子前端
相關推薦

2024-05-22 09:29:43

2023-07-24 07:11:43

2016-05-10 10:16:13

JavaScript技巧

2022-10-11 08:00:47

多線程開發技巧

2024-06-11 00:09:00

JavaScript模式變量

2020-08-11 08:11:40

JavaScript開發技術

2020-06-23 08:28:26

前端開發技巧

2025-01-07 10:48:08

2020-01-03 09:27:10

UI設計師網格

2010-04-30 10:07:45

Linux管理效率

2022-09-05 14:17:48

Javascript技巧

2024-09-06 15:48:13

2025-02-03 00:00:00

Vue.js組件緩存

2022-08-24 14:42:51

Linux技巧

2009-09-04 10:27:28

Linux實用技巧linux操作系統linux

2022-03-23 09:18:10

Git技巧Linux

2012-03-07 14:46:29

2024-03-28 08:15:09

Spring技巧配置

2009-12-21 15:50:39

2018-07-23 13:02:30

數據可視化顏色數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99免费看 | 国产精品色| 999www视频免费观看 | www国产精品 | 亚洲精品一区中文字幕乱码 | 一区二区在线看 | 午夜精品一区二区三区在线观看 | 日韩视频精品在线 | 国产精品自拍视频 | 亚洲一区中文字幕 | 美女爽到呻吟久久久久 | 亚洲精品一区二区 | 久久久久久久久毛片 | 欧美日韩一区在线播放 | 精品国模一区二区三区欧美 | 国产精品久久久久久吹潮 | 国产一区二区在线免费观看 | 成人毛片网站 | 伊人久久免费 | 亚洲欧美激情精品一区二区 | 麻豆精品国产免费 | 欧美久久久久久久久 | 黄网站在线观看 | 天天干夜夜| 国产精品大片 | aaa在线观看 | 亚洲精品一二三区 | 国产精品久久久久久网站 | 韩国毛片一区二区三区 | 亚洲精品久久久久国产 | 超碰网址| 国产免费观看一级国产 | 精品一二区 | 日本a v在线播放 | 国产免费又黄又爽又刺激蜜月al | 91电影在线 | 国产成人免费视频网站高清观看视频 | 精品中文字幕一区 | av天天操 | 日韩在线免费 | 久久精品69 |