關(guān)于Javascript中值得學(xué)習(xí)的特性總結(jié)
可選鏈操作符(Optional Chaining Operator)
可選鏈操作符允許我們在一個對象的屬性值為空或未定義時,直接返回undefined,而不會拋出“Cannot read property 'xxx' of undefined”等錯誤。這樣的好處是可以簡化代碼,避免繁瑣的判斷邏輯。例如:
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合并運算符(??),將原本需要多次判斷的代碼縮減到了一行。如果person、address或city不存在,則會直接返回undefined或'unknown'。
空值合并運算符(Nullish Coalescing Operator)
空值合并運算符允許我們在變量為空或undefined時,直接返回默認值。與傳統(tǒng)的||操作符不同,它只會在變量為null或undefined時返回默認值,而不是在變量為0、空字符串或false時也返回默認值。例如:
const name = ''; // 普通寫法 const username = name || 'unknown'; // 空值合并寫法 const username = name ?? 'unknown';
在上述代碼中,我們使用了空值合并運算符(??)將原本需要繁瑣判斷的代碼簡化到了一行,如果name為空或undefined,則會返回'unknown'。
Promise.allSettled()
Promise.allSettled()方法可以接收一個由Promise對象組成的數(shù)組,等待所有Promise對象都執(zhí)行完成后,返回一個包含所有Promise對象的狀態(tài)信息(fulfilled/rejected)和結(jié)果值(value/reason)的數(shù)組。與Promise.all()不同的是,即使其中某個Promise被reject,Promise.allSettled()仍然會等待其他Promise對象執(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對象的狀態(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ù),并通過+運算符對它們進行了加法計算。
以上就是關(guān)于Javascript中值得學(xué)習(xí)的特性總結(jié)的詳細內(nèi)容,更多關(guān)于Javascript特性的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解ES6 Promise對象then方法鏈式調(diào)用
這篇文章主要介紹了詳解ES6 Promise對象then方法鏈式調(diào)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11
為什么JS中eval處理JSON數(shù)據(jù)要加括號
這篇文章主要介紹了為什么JS中eval處理JSON數(shù)據(jù)要加括號的相關(guān)資料,需要的朋友可以參考下2015-04-04
JavaScript中object和Object的區(qū)別(詳解)
下面小編就為大家?guī)硪黄狫avaScript中object和Object的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
利用javascript移動div層-javascript 拖動層
利用javascript開發(fā)在界面上隨意拖動以下html code中的div層2009-03-03
JavaScript Promise原理與實現(xiàn)刨析
首先呢,Promise是異步中比較重要的知識點,學(xué)習(xí)的最好方法就是掌握它的基本原理。所以這一篇主要說一下如何用JS來實現(xiàn)一個自己的promise2022-10-10
JS組件Bootstrap Table表格多行拖拽效果實現(xiàn)代碼
這篇文章主要介紹了JS組件Bootstrap Table表格多行拖拽效果實現(xiàn)代碼,需要的朋友可以參考下2015-12-12

