关于php:我们在JavaScript中有一个更简单的三元运算符吗?

Do we have a simpler ternary operator in JavaScript?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

我厌倦了做:

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


空合并运算符是最近添加到PHP中的。它是在php 7中引入的(于2015年12月发布),这是该特性首次被提出10多年之后。

在javascript中,逻辑或运算符可以用于此目的达数年之久(因为创建了javascript?!!)

如文件所述:

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.

而不是写作

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

您可以使用较短的:

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

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

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


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

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

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