一、Optional Chaining(可選鏈式調用)javascript
const data = {
user: {},
};
console.log(data.user.address.street);
// Uncaught TypeError: Cannot read property 'street' of undefined
複製代碼
這是咱們如今 ES6 中會遇到的問題,緣由是 user 中沒有 address 對象,而後咱們這樣判斷:java
const street = data && data.user && data.user.address && data.user.address.street;
console.log(street); // undefined
複製代碼
這樣的寫法不好勁安全
新特性能夠這樣寫( ?. 相似於angular5的安全操做符)bash
console.log(data.user?.address?.street) //undefined
複製代碼
二、Nullish coalescing(空值合併)
咱們判斷空值通常這樣:app
value != null ? value : 'default value';
複製代碼
或者這樣:函數
value || 'default value'
複製代碼
新特性能夠這樣寫( ?? ):ui
value ?? 'default value';
複製代碼
三、Pipeline operator(管道運算符)
舉個例子,經過三個函數對字符串進行處理,一般是這樣:spa
function a(str) { return str + ", " + str;}
function b(str) {
return str[0].toUpperCase() + str.substring(1);
}
function c(str) {
return str + '!';
}
let result = c ( b ( a("hello") ) ); // "Hello, hello!"
複製代碼
經過 管道運算符,咱們能夠這樣寫:code
let result = "hello" |> a |> b |> c // "Hello, hello!"
複製代碼
參考:Here are three upcoming changes to JavaScript that you’ll loveregexp
(完)