【发布时间】:2011-01-07 05:31:14
【问题描述】:
鉴于这个 JavaScript 的 sn-p...
var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';
var f = a || b || c || d || e;
alert(f); // 4
有人可以向我解释一下这种技术叫什么(我最好的猜测是这个问题的标题!)?以及它是如何/为什么起作用的?
我的理解是变量f 将被分配为第一个变量的最接近的值(从左到右),该变量的值不是空值或未定义,但我没有设法找到太多参考关于这项技术的资料,并且已经看到它被大量使用。
另外,这种技术是 JavaScript 特有的吗?我知道在 PHP 中做类似的事情会导致 f 具有真正的布尔值,而不是 d 本身的值。
【问题讨论】:
-
老问题,但是关于 PHP,有一个可以使用的结构:
$f=$a or $f=$b or $f=$c; // etc。 PHP 有||操作符和or操作符,它们做同样的工作;但是,or是在 赋值之后评估的,而||是在之前评估的。这也给你$a=getSomething() or die('oops');的perlish风格 -
在 PHP 5.3 中,您可以省略三元运算符的中间部分,因此基于此...您也可以将其剪短一点:
$f = $a ?: $b ?: $c; -
从 PHP 7 开始,您可以为此使用
??。$a = $b ?? 'default' -
@SpencerRuskin 所以如果
$b为真,那么$a将被分配$b的值,其他'default'? -
没错。查看此页面上的空合并运算符部分:php.net/manual/en/migration70.new-features.php
标签: javascript variables variable-assignment or-operator