devconcept Asked: 2020-01-08 06:38:57 +0800 CST 2020-01-08 06:38:57 +0800 CST 2020-01-08 06:38:57 +0800 CST Elvis 运算符 ?: 和 null 合并运算符之间的区别 772 阅读这个问题,我发现了对所谓的Elvis 运算符(英文链接)的引用,或者它与javascript 中使用?:的运算符非常相似,或者也称为空合并运算符(英文链接)。|| 对两者进行更多调查,我无法区分它们之间的任何区别,这让我问自己,真的有区别吗?如果没有,那么为什么有两个对语义上相同的东西的引用? elvis 运算符的示例 var variable = foo ?: bar foo如果foo存在且不为空则返回,否则返回bar 空合并运算符 var variable = foo || bar 这完全一样 注意:elvis 运算符不是 javascript 语言的一部分,而三元运算符是. operador 2 Answers Voted Best Answer Wilfredo 2020-01-08T06:52:06+08:002020-01-08T06:52:06+08:00 两者的行为相同,但不同之处在于您使用的是哪种语言。 例如,在Elvis Operator中不可用Javascript,因为为此我们有||o 双管道。 另一方面,例如在 PHP 中,没有 || 执行 Null Coalescing Operator 并为此?:, 简单地 aif ternario或失败??. 如果您查看您发布的维基百科文章,并查看它使用的语言,它就会Elvis Operator显示出来。C,Groovy和PHP angus 2020-01-08T06:48:57+08:002020-01-08T06:48:57+08:00 是a = false的, a ?? 'x' -> a a || 'x' -> x 在某些语言中有几个假值(通常是false, null, 0, "", 空列表等)。如果它们在左侧,则 null 合并运算符将返回这些值(null当然除了 with ),而 Elvis 运算符将返回另一侧的那些值。
两者的行为相同,但不同之处在于您使用的是哪种语言。
例如,在
Elvis Operator
中不可用Javascript
,因为为此我们有||
o 双管道。另一方面,例如在 PHP 中,没有 || 执行 Null Coalescing Operator 并为此
?:
, 简单地 aif ternario
或失败??
.如果您查看您发布的维基百科文章,并查看它使用的语言,它就会
Elvis Operator
显示出来。C
,Groovy
和PHP
是
a = false
的,在某些语言中有几个假值(通常是
false
,null
,0
,""
, 空列表等)。如果它们在左侧,则 null 合并运算符将返回这些值(null
当然除了 with ),而 Elvis 运算符将返回另一侧的那些值。