一尘不染

在Javascript中,当变量声明中包含逻辑运算符时,这意味着什么?

javascript

鉴于这段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或未定义,但是我没有设法找到有关此技术的大量参考资料,并且看到它用了很多。

另外,这项技术是否专门针对JavaScript?我知道在PHP中执行类似操作会导致f具有真正的布尔值,而不是其d自身值。


阅读 231

收藏
2020-05-01

共1个答案

一尘不染

如果变量是falsy,则可以指定一个默认值,在这种情况下为的值。yx

JavaScript中的布尔运算符可以返回操作数,而不是像其他语言一样总是返回布尔结果。

||如果第一个操作数为falsy,则逻辑OR运算符()返回其第二个操作数的值,否则返回第一个操作数的值。

例如:

"foo" || "bar"; // returns "foo"
false || "bar"; // returns "bar"

Falsy值是谁要挟到false布尔上下文中使用时,它们是0nullu``ndefined,一个空字符串,NaN当然false。

2020-05-01