關於Javascript中值得學習的特性總結
可選鏈操作符(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時,直接返回默認值。與傳統的||操作符不同,它隻會在變量為null或undefined時返回默認值,而不是在變量為0、空字符串或false時也返回默認值。例如:
const name = ''; // 普通寫法 const username = name || 'unknown'; // 空值合並寫法 const username = name ?? 'unknown';
在上述代碼中,我們使用瞭空值合並運算符(??)將原本需要繁瑣判斷的代碼簡化到瞭一行,如果name為空或undefined,則會返回'unknown'。
Promise.allSettled()
Promise.allSettled()方法可以接收一個由Promise對象組成的數組,等待所有Promise對象都執行完成後,返回一個包含所有Promise對象的狀態信息(fulfilled/rejected)和結果值(value/reason)的數組。與Promise.all()不同的是,即使其中某個Promise被reject,Promise.allSettled()仍然會等待其他Promise對象執行完畢後再返回結果。例如:
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對象的狀態信息和結果值,並使用forEach遍歷輸出瞭它們的狀態(fulfilled/rejected)和結果值(value/reason)。
BigInt類型
BigInt類型是ES2020新引入的一種數據類型,用於表示任意精度的整數。相較於Number類型,它能夠處理更大的整數,避免瞭溢出和精度丟失的問題。例如:
const x = BigInt(Number.MAX_SAFE_INTEGER); const y = BigInt('9007199254740993'); const z = x + y; console.log(z); // 9007199254740994n
在上述代碼中,我們使用瞭BigInt類型來表示較大的整數,並通過+運算符對它們進行瞭加法計算。
以上就是關於Javascript中值得學習的特性總結的詳細內容,更多關於Javascript特性的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 字節飛書面試promise.all實現示例
- 面試手寫實現Promise.all
- Promise靜態四兄弟實現示例詳解
- 前端JavaScript之Promise
- JS Promise axios 請求結果後面的.then() 是什麼意思