翻譯:瘋狂的技術宅做者:Chris on Codejavascript
原文:https://scotch.io/tutorials/j...前端
未經容許嚴禁轉載java
今年ECMAScript 2020(ES2020)將發佈!自 2015 年 ECMAScript 2015(ES6)發佈以來,咱們每一年都對 JavaScript 語言進行更新。程序員
目錄面試
||
)在ES2020中,咱們得到了在其餘語言中( 如 C# 和 PHP)早已可用的功能:空值合併運算符。我一直喜歡這個名字,由於每當我說這個名字時,都會以爲本身很聰明。 🤓segmentfault
空值合併運算符將會遍歷列表,並返回第一個不是 null 或 undefined 的值。
重要的是要注意,空值合併運算符僅查找 null
或 null
值。空值合併運算符接受虛值(Falsy values)。瀏覽器
讓咱們看一些例子。請記住,JavaScript 的空值合併運算符將遵循 ??
鏈,直到找到非空或未定義的對象。若是找到 false
,它將返回該值。服務器
null ?? 'hi' // 'hi' undefined ?? 'hey' // 'hey' false ?? 'hola' // false 0 ?? 'bonjour' // 0 'first' ?? 'second' // first
在下面的例子中,咱們在變量中存儲了一些值:微信
let person // <-- person is undefined here person ?? { name: 'chris' } // { name: 'chris' } const isActive = false isActive ?? true // false
JavaScript 的空值合併運算符的妙處在於,咱們能夠根據須要將其進行屢次連接。多線程
null ?? undefined ?? false ?? 'hello' // false null ?? '' ?? 'hello' // ''
能夠在從外部來源獲取數據時使用。好比咱們想從多個地方抓取博客的文章。而後能夠肯定哪一個文章將會成爲咱們的精選帖子:
// 簡化代碼。 使用 fetch requires 須要比這更多的代碼 const firstBlogPost = await fetch('...') const secondBlogPost = await fetch('...') const defaultBlogPost = { title: 'Default Featured Post' } const featuredBlogPost = firstBlogPost ?? secondBlogPost ?? defaultBlogPost
若是不肯定某些值是否存在,上面是設置默認值的好方法。
||
)若是要消除虛值,能夠用 邏輯或運算符 (||
)。
本質上,它與空合併運算符的做用相同,只是它消除了虛值。
null
,undefined
null
,undefined
,false
false ?? 'hello' // false false || 'hello' // 'hola'
若是你不想用要虛值,可使用 ||
。若是隻想檢查是否爲 null
或 undefined
,就用 ??
。
在撰寫本文時,最新版本的 Chrome、Firefox、Edge 和 Safari 可使用空值合併運算符。
空值合併運算符是該 JavaScript 語言不錯的補充。擁有更多檢查值的選擇並無什麼壞處。