JavaScript中有更简单的三元运算符吗?
我刚才看到这个语法在PHP中:JavaScript中有更简单的三元运算符吗?
// 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(null
,false
,0
,NaN
,""
或undefined
),那么第二个值将被分配。
Null coalescing operator是PHP的新增内容。它是在PHP 7(2015年12月发布)中推出的,自功能为proposed for the first time以来已有10多年的历史。
在Javascript中,logical OR运营商可用于此目的的年龄(since Javascript was created?!)。
作为documentation说明:
逻辑OR(
||
)
expr1 || expr2
返回
expr1
,如果它可以被转换为true
;否则,返回expr2
。
因此,当与布尔值一起使用时,||
返回true
,如果任一操作数是true
;如果两者都是false
,则返回false
。
而是写作的
var name = obj['name'] ? obj['name'] : 'GOD';
你可以使用更短:
var name = obj['name'] || 'GOD';
的||
操作者可以多次使用,以创建一个计算的第一价值较长的表达非空的操作数:
var name = obj['name'] || obj['desc'] || 'GOD';
我很好奇:在问题关闭后30分钟,您是如何设法回答问题的? –
我不知道。我回答使用移动应用程序。现在我记得在我发布答案后,问题再次加载并且已经关闭。我当时认为,在我的回答发布后,问题被重新加载,但我现在看到,确实,我的答案的第一个版本在问题结束后30分钟发布。也许Matrix有一个小故障。 :-) – axiac
P.S如果我们已经拥有它,请让我知道 –
var name = obj ['name'] || '上帝';' –
谢谢。我很不知道这个.. –