關(guān)于Javascript中值得學(xué)習(xí)的特性總結(jié)
可選鏈操作符(Optional Chaining Operator)
可選鏈操作符允許我們?cè)谝粋€(gè)對(duì)象的屬性值為空或未定義時(shí),直接返回undefined,而不會(huì)拋出“Cannot read property 'xxx' of undefined”等錯(cuò)誤。這樣的好處是可以簡(jiǎn)化代碼,避免繁瑣的判斷邏輯。例如:
const person = { name: 'Tom', age: 18, address: { city: 'Shanghai' } }; // 普通寫法 if (person && person.address && person.address.city) { console.log(person.address.city); } else { console.log('unknown'); } // 可選鏈寫法 console.log(person?.address?.city ?? 'unknown');
在上述代碼中,我們使用了可選鏈操作符(?)和nullish合并運(yùn)算符(??),將原本需要多次判斷的代碼縮減到了一行。如果person、address或city不存在,則會(huì)直接返回undefined或'unknown'。
空值合并運(yùn)算符(Nullish Coalescing Operator)
空值合并運(yùn)算符允許我們?cè)谧兞繛榭栈騯ndefined時(shí),直接返回默認(rèn)值。與傳統(tǒng)的||操作符不同,它只會(huì)在變量為null或undefined時(shí)返回默認(rèn)值,而不是在變量為0、空字符串或false時(shí)也返回默認(rèn)值。例如:
const name = ''; // 普通寫法 const username = name || 'unknown'; // 空值合并寫法 const username = name ?? 'unknown';
在上述代碼中,我們使用了空值合并運(yùn)算符(??)將原本需要繁瑣判斷的代碼簡(jiǎn)化到了一行,如果name為空或undefined,則會(huì)返回'unknown'。
Promise.allSettled()
Promise.allSettled()方法可以接收一個(gè)由Promise對(duì)象組成的數(shù)組,等待所有Promise對(duì)象都執(zhí)行完成后,返回一個(gè)包含所有Promise對(duì)象的狀態(tài)信息(fulfilled/rejected)和結(jié)果值(value/reason)的數(shù)組。與Promise.all()不同的是,即使其中某個(gè)Promise被reject,Promise.allSettled()仍然會(huì)等待其他Promise對(duì)象執(zhí)行完畢后再返回結(jié)果。例如:
const promises = [ Promise.resolve(1), Promise.reject(new Error('fail')), Promise.resolve(3) ]; Promise.allSettled(promises).then(results => { results.forEach(result => { console.log(result.status, result.value); }); });
在上述代碼中,我們使用了Promise.allSettled()方法獲取了所有Promise對(duì)象的狀態(tài)信息和結(jié)果值,并使用forEach遍歷輸出了它們的狀態(tài)(fulfilled/rejected)和結(jié)果值(value/reason)。
BigInt類型
BigInt類型是ES2020新引入的一種數(shù)據(jù)類型,用于表示任意精度的整數(shù)。相較于Number類型,它能夠處理更大的整數(shù),避免了溢出和精度丟失的問題。例如:
const x = BigInt(Number.MAX_SAFE_INTEGER); const y = BigInt('9007199254740993'); const z = x + y; console.log(z); // 9007199254740994n
在上述代碼中,我們使用了BigInt類型來表示較大的整數(shù),并通過+運(yùn)算符對(duì)它們進(jìn)行了加法計(jì)算。
以上就是關(guān)于Javascript中值得學(xué)習(xí)的特性總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Javascript特性的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用閉包對(duì)setTimeout進(jìn)行簡(jiǎn)單封裝避免出錯(cuò)
寫js腳本時(shí)經(jīng)常會(huì)用到一些拼寫函數(shù)的情況,例如調(diào)用setTimeout...查了很長(zhǎng)時(shí)間,為什么就是彈不出對(duì)話框呢,使用閉包就可完全避免了2013-07-07詳解ES6 Promise對(duì)象then方法鏈?zhǔn)秸{(diào)用
這篇文章主要介紹了詳解ES6 Promise對(duì)象then方法鏈?zhǔn)秸{(diào)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11為什么JS中eval處理JSON數(shù)據(jù)要加括號(hào)
這篇文章主要介紹了為什么JS中eval處理JSON數(shù)據(jù)要加括號(hào)的相關(guān)資料,需要的朋友可以參考下2015-04-04JavaScript中object和Object的區(qū)別(詳解)
下面小編就為大家?guī)硪黄狫avaScript中object和Object的區(qū)別(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02利用javascript移動(dòng)div層-javascript 拖動(dòng)層
利用javascript開發(fā)在界面上隨意拖動(dòng)以下html code中的div層2009-03-03JavaScript Promise原理與實(shí)現(xiàn)刨析
首先呢,Promise是異步中比較重要的知識(shí)點(diǎn),學(xué)習(xí)的最好方法就是掌握它的基本原理。所以這一篇主要說一下如何用JS來實(shí)現(xiàn)一個(gè)自己的promise2022-10-10JS組件Bootstrap Table表格多行拖拽效果實(shí)現(xiàn)代碼
這篇文章主要介紹了JS組件Bootstrap Table表格多行拖拽效果實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-12-12