JavaScript shorthand ternary operator
var startingNumber = startingNumber || 1;
Something like that what you're looking for, where it defaults if undefined?
var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1; // 2
By the way, this works for a lot of scenarios, including objects:
var foo = bar || {}; // secure an object is assigned when bar is absent
||
will return the first truthy value it encounters, and can therefore be used as a coalescing operator, similar to C#'s ??
startingNum = startingNum || 1;
Yes, there is:
var startingNum = startingNum || 1;
In general, expr1 || expr2
works in the following way (as mentioned by the documentation):
Returns
expr1
if it can be converted totrue
; otherwise, returnsexpr2
. Thus, when used withBoolean
values,||
returnstrue
if either operand istrue
; if both arefalse
, returnsfalse
.
With the addition of ES2020:
New w/Nullish Coalescence: const difficulty = var?.nest[i]?.prop ?? false
Older Operation: const difficulty = var.nest[i].prop ? var.nest[i].prop : false
The question mark before the property will first check if the object even exists (if you aren't sure it will: like in API data) and, if an object is missing, it will return undefined
The ??
checks if the value on the left is null
or undefined
and, if it is, will return a supplied value on the right.