This question already has an answer here:
I just saw this syntax in PHP:
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
Why don't we have the same in JavaScript?
I am tired of doing:
var name = obj['name'] ? obj['name'] : 'GOD';
</div>
The Null coalescing operator is a recent addition to PHP. It was introduced in PHP 7 (released in December 2015), more than 10 years after the feature was proposed for the first time.
In Javascript, the logical OR operator can be used for this purpose for ages (since Javascript was created?!).
As the documentation explains:
Logical OR (
||
)
expr1 || expr2
Returns
expr1
if it can be converted totrue
; otherwise, returnsexpr2
.
Thus, when used with Boolean values,||
returnstrue
if either operand istrue
; if both arefalse
, returnsfalse
.
Instead of writing
var name = obj['name'] ? obj['name'] : 'GOD';
you can use the shorter:
var name = obj['name'] || 'GOD';
The ||
operator can be used several times to create a longer expression that evaluates to the value of the first operand that is not empty:
var name = obj['name'] || obj['desc'] || 'GOD';
In javascript you can do the following:
var name = obj['name'] || "GOD"
If the first value is false (null
, false
, 0
, NaN
, ""
or undefined
), then the second value is going to be assigned.