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

四個很多人都不知道的現代 JavaScript 技巧

開發 前端
JavaScript在不斷的進化和升級,越來越多的新特性讓我們的代碼變得更加簡潔。因此,今天這篇文章,我將跟大家分享 4 個不常用的 JavaScript 運算符。讓我們一起研究它們。

JavaScript在不斷的進化和升級,越來越多的新特性讓我們的代碼變得更加簡潔。因此,今天這篇文章,我將跟大家分享 4 個不常用的 JavaScript 運算符。讓我們一起研究它們。

1.可選的鏈接運算符

這個功能非常好用,它可以防止我的代碼出錯,甚至可以大大簡化它。

例如,我們想打印一個人的名字,我敢打賭這很容易!沒有困難。

const showName = (data) => {
console.log(data.user.name)
}

showName({
user: {
name: 'fatfish'
}
})

圖片

不幸的是,我太粗心了,沒有按照showName的要求傳合法的參數,結果出事了。

const showName = (data) => {
console.log(data.user.name)
}

showName('fatfish')

圖片

你一定是一個有經驗的軟件工程師,所以很容易寫出像下面這樣的代碼。

const showName = (data) => {
console.log(data && data.user && data.user.name)
}

showName('fatfish')

圖片

有沒有更優雅的方式?如果數據層級嵌套太深,就是一段臭代碼。

const showName = (data) => {
console.log(data && data.user && data.user.person ...)
}

showName('fatfish')

別擔心,Optional Chaining Operator 可以幫助我們。下面的代碼不再拋出錯誤,這很棒。

const showName = (data) => {
console.log(data?.user?.name)
}

showName('fatfish')

圖片

什么是可選鏈接運算符?

來自 mdn的解釋:可選的鏈接運算符 (?.) 訪問對象的屬性或調用函數。如果對象是 undefined 或 null,它返回 undefined 而不是拋出錯誤。

const adventurer = {
name: 'Alice',
cat: {
name: 'Dinah'
}
}

const dogName = adventurer?.dog?.name

console.log(dogName)
// expected output: undefined
console.log(adventurer.someNonExistentMethod?.())
// expected output: undefined

2.合并賦值 (??=)

來自mdn的解釋:空值合并賦值 (x ??= y) 運算符僅在 x 為空值(null 或未定義)時才賦值。

const obj = {
name: 'fatfish'
}

obj.name ??= 'medium'
obj.age ??= 100
console.log(obj.name, obj.age)

是的,最后只分配了 age 屬性。

小伙伴們,你們覺得哪一行代碼更接近??=?的功能呢?答案1還是答案2?

// 1.
x ?? (x = y)
// 2.
x = x ?? y

我想你猜對了,答案是1。

因為答案2在任何情況下都會賦值x,而答案1只有在x為真時才會賦值。

它能為我們做什么?

那么,我們可以用它做什么呢?是的,它可以做與默認參數完全相同的事情。

const showName = (name) => {
name ??= 'fatfish'
console.log(name)
}

showName('medium') // medium
showName() // fatfish

它幾乎等同于以下代碼。

const showName = (name = 'fatfish') => {
console.log(name)
}

showName('medium') // medium
showName() // fatfish

好吧,我不得不承認編寫默認參數讓我更快樂。

3.邏輯或賦值(||=)

來自 mdn的解釋:邏輯或賦值 (x ||= y) 運算符僅在 x 為假時才賦值。

const obj = {
name: '',
age: 0
}

obj.name ||= 'fatfish'
obj.age ||= 100

console.log(obj.name, obj.age) // fatfish 1000

小伙伴們可以看到,當x的值為假值時,賦值成功。

它能為我們做什么?

來自mdn:如果“lyrics”元素為空,則顯示默認值:

document.getElementById("lyrics").textContent ||= "No lyrics."

短路在這里特別有用,因為元素不會進行不必要的更新,也不會導致不必要的副作用,例如,額外的解析或渲染工作,或失去焦點等。

4.邏輯與賦值(&&=)

來自mdn:邏輯與賦值 (x &&= y) 運算符僅在 x 為真時才賦值。

與邏輯或賦值 (||=) 相反,只有 x 為真時才會正確賦值。


const obj = {
name: 'fatfish',
age: 100
}

obj.name &&= 'medium' // medium
obj.age &&= 1000 // 1000
console.log(obj.name, obj.age) // medium 1000

寫在最后

以上內容,就是我今天跟你分享的4個關于JavaScript運算符的知識,如果你覺得有用的話,請記得點贊我,關注我,并將這篇文章分享給你的朋友,也許能夠幫助到他。

最后,感謝你的閱讀,編程愉快!

責任編輯:華軒 來源: web前端開發
相關推薦

2021-08-27 10:03:12

人工智能AI

2020-11-20 06:13:04

Like %

2018-08-10 10:36:25

SSL證書誤區

2021-01-15 05:39:13

HashMapHashTableTreeMap

2020-06-29 08:28:36

v-for 解構函數

2021-08-24 00:13:23

Windows 10Windows微軟

2020-07-14 08:43:54

VueHTML函數

2023-06-05 08:07:34

聚集索引存儲數據

2020-07-01 08:36:43

CSS規范web

2015-07-22 11:53:29

云計算AWS分析癱瘓

2019-12-13 19:52:29

人工智能AI

2021-05-08 23:19:25

微信存儲小程序

2023-07-07 14:47:46

JavaScript技巧

2025-02-04 17:33:00

2025-02-27 08:33:13

2025-05-29 01:55:00

Vue3.5API性能

2017-11-07 21:58:25

前端JavaScript調試技巧

2020-11-03 09:51:04

JavaScript開發 技巧

2020-07-07 08:35:53

VueKey組件

2019-01-07 09:27:39

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品在线视频免费观看 | 亚洲 一区| 欧美性猛交一区二区三区精品 | 久久美女网 | 欧美成人a | 成人av在线网站 | 日韩精品一区二区三区中文字幕 | 午夜播放器在线观看 | 999热精品视频 | 免费黄色在线 | 亚洲女人天堂成人av在线 | 国产一区二区自拍 | 欧美精品在线播放 | 欧美视频二区 | 黄色在线免费网站 | 蜜桃在线播放 | 国产探花在线精品一区二区 | av性色| 男人午夜视频 | 久久久国产网站 | 中文字幕在线第一页 | 亚洲成人中文字幕 | 国产在线区 | 欧美中文在线 | 国产亚洲精品美女久久久久久久久久 | 99久久婷婷国产综合精品电影 | 久久一区| 在线一区 | av色在线 | 久久久国产一区二区三区 | 91精品国产综合久久久久久丝袜 | 交专区videossex农村 | 午夜av成人 | 欧美亚洲国产一区 | 欧美日韩一区在线 | 国产一区二区麻豆 | 一级毛片视频在线 | 日韩在线资源 | 日韩精品一区二区三区在线观看 | 久久免费福利 | 日韩美女爱爱 |