天天看點

?? 空值合并運算符

空值合并操作符(??)是一個邏輯操作符,當左側的操作數為 null 或者 undefined 時,傳回其右側操作數,否則傳回左側操作數。

設定預設值

通常我們在設定預設值的時候會用 || 在左值為ture的情況下沒問題

let a = 2
	let sex = a || 1
	// sex = 2
           

由于 || 是一個布爾邏輯運算符,左側的操作數會被強制轉換成布爾值用于求值。任何假值(0, ‘’, NaN, null, undefined)都不會被傳回。這導緻如果你使用0,’'或NaN作為有效值,就會出現不可預料的後果。

let a = 0
	let sex = a || 1
	// sex = 1
           

如果是用

let a = 0
	let sex = a ?? 1
	// sex = 0
           

短路操作

function A() { console.log('函數 A 被調用了'); return undefined; }
	function B() { console.log('函數 B 被調用了'); return fasle; }
	function C() { console.log('函數 C 被調用了'); return 'c'; }
	
	console.log( A() ?? C() );
	// 依次列印 "函數 A 被調用了"、"函數 C 被調用了"、"foo"
	// A() 傳回了 undefined,是以操作符兩邊的表達式都被執行了
	
	console.log( B() ?? C() );
	// 依次列印 "函數 B 被調用了"、"false"
	// B() 傳回了 false(既不是 null 也不是 undefined)
	// 是以右側表達式沒有被執行
           

相容性要注意,小程式開發可用

?? 空值合并運算符

繼續閱讀