鉴于这段JavaScript代码片段...
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
将被赋予第一个具有值不为null或undefined的变量(从左到右),但我没有找到太多关于这种技术的参考资料,而且我看到它被广泛使用。
此外,这种技术是否特定于JavaScript? 我知道在PHP中做类似的事情会导致f
具有真正的布尔值,而不是d
本身的值。
$f=$a or $f=$b or $f=$c; // 等等
。PHP有||
运算符和or
运算符,它们执行相同的工作;然而or
在赋值之后被计算,而||
在之前被计算。这也使你可以使用Perl风格的$a=getSomething() or die('oops');
。 - Manngo$f = $a ?: $b ?: $c;
- Rei??
来实现此目的。$a = $b ?? 'default'
- Spencer Ruskin$b
为真,则$a
将被赋值为$b
的值,否则为'default'
? - oldboy