歡迎您光臨本站 註冊首頁

Optional Chaining 進入 ES2020,不用滿屏`x && x.yyy`了

←手機掃碼閱讀     admin @ 2019-12-06 , reply:0

微軟 TypeScript 程序經理 Daniel Rosenwasser 宣布 Optional Chaning(?. )進入 TC39 Stage 4 狀態,這意味著該特性現在已經是 ES2020 標準的一部分。

Optional Chaining 最初是 TypeScript 的 issue 跟蹤器上第 16 個 issue,於 5 年前提交,要知道目前總共有多達 23000 個 issue。當時 TC39 還沒有正式提案,這些年來開發者一直要求實現該特性,但是為了不與 ECMAScript 建議衝突,遲遲沒有實現,相反 TS 開發團隊一直在幫助推動該提案實現標準化,並最終推及所有 JavaScript 與 TypeScript 開發者。

TypeScript 就在上個月發布的 3.7 版本中,正式帶來了 Optional Chaining 特性,現在則更進一步,該特性進入了 ECMAScript 標準。

Optional Chaining 特性主要用於保護出現在屬性路徑中 null 和 undefined 值,像 C# 等語言中已經有用於訪問屬性鏈的語法糖,可以在對象層次結構中的任何地方處理遇到的 null 和 undefined 情況,使它可以正常執行,而不會拋出錯誤。

具體來講,在向樹狀結構深處進行屬性值訪問時,通常需要檢查中間節點是否存在:


var street = user.address && user.address.street;

許多 API 返回一個對象或 null/undefined,並且可能只想在結果不為 null 時從結果中提取屬性:


var fooInput = myForm.querySelector('input[name=foo]')
var fooValue = fooInput ? fooInput.value : undefined

Optional Chaining 運算符允許開發人員直接用簡單的方式處理這種情況,而不用進行重複性操作,或者使用臨時變數分配中間結果:


var street = user.address?.street
var fooValue = myForm.querySelector('input[name=foo]')?.value

因為是保護訪問屬性鏈時的 null 與 undefined,所以 Optional Chaining 運算符也叫做「安全導航運算符」,TC39 標準中給出的該運算符是「?.」,它的語法可以適用於三種場景:


obj?.prop       // 自判斷靜態屬性訪問
obj?.[expr]     // 自判斷動態訪問
func?.(...args) // 自判斷函數或方法調用

對於開發者來說,再也不用看到滿屏`x && x.yyy`了。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/111888/optional-chaining-moved-to-stage-4
Optional Chaining 進入 ES2020,不用滿屏`x && x.yyy`了已經有231次圍觀

http://coctec.com/news/all/show-post-220829.html