我喜欢用JavaScript实现以下操作:
function (a, b, c) {
var foo = a || b || c;
return foo.bar;
}
有没有一种快速的方法可以使用回退来进行赋值,或者这需要一个自定义的函数
?
我喜欢用JavaScript实现以下操作:
function (a, b, c) {
var foo = a || b || c;
return foo.bar;
}
有没有一种快速的方法可以使用回退来进行赋值,或者这需要一个自定义的函数
?
PHP 5.3 引入了 ?:
运算符(不要与三元条件运算符混淆,想想也知道)。我不使用 PHP,但我想它应该是这样的:
$foo = $a ?: $b ?: $c
请参考:http://php.net/manual/zh/language.operators.comparison.php
自 PHP 5.3 起,可以省略三元运算符的中间部分。表达式 expr1 ?: expr3 如果 expr1 的值为 TRUE,则返回 expr1,否则返回 expr3。
祝编码愉快。
a=false,b=0,c=1
将返回1,因此此方法的使用受到限制。还要注意它将返回表达式的结果,因此当data[a]被设置时,isset(data[a]) ?: 'bar'
将返回true
;而你可能期望它返回data[a]的值。顺便说一下,手册建议不要堆叠三元运算符。 - Gordona ?: b
可以看作是a ? a : b
的“快捷语法”,避免了对a
的两次评估。我不知道?:
的其他怪癖会如何影响它。嵌套不是问题,因为它是一个二元运算符(而不是像另一种形式那样的三元运算符),所以不存在关于意图和语法的歧义。 - user166390