我们在 JavaScript 中有更简单的三元运算符吗?

Do we have a simpler ternary operator in JavaScript?

我刚刚在 PHP 中看到了这个语法:

// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';

为什么我们在 JavaScript 中没有相同的内容?

我厌倦了:

var name = obj['name'] ? obj['name'] : 'GOD';

在 javascript 中,您可以执行以下操作:

var name = obj['name'] || "GOD"

如果第一个值为 false(nullfalse0NaN""undefined),则将分配第二个值。

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.

在Javascript中,logical OR operator can be used for this purpose for ages (since Javascript was created?!).

正如 documentation 解释的那样:

Logical OR (||)

expr1 || expr2

Returns expr1 if it can be converted to true; otherwise, returns expr2.
Thus, when used with Boolean values, || returns true if either operand is true; if both are false, returns false.

而不是写作

var name = obj['name'] ? obj['name'] : 'GOD';

你可以使用更短的:

var name = obj['name'] || 'GOD';

可以多次使用 || 运算符来创建一个更长的表达式,该表达式的计算结果为第一个非空操作数的值:

var name = obj['name'] || obj['desc'] || 'GOD';