&&评估问题

And*_*old 6 javascript jquery ecmascript-5

据我所知,逻辑&&如下

var test = false;
var foo = test && 42;
Run Code Online (Sandbox Code Playgroud)

此代码,将分配42到foo 仅第一条件被评估为true.所以在这个例子中,foo将保持其当前值.

我想知道为什么这个片段根本不起作用:

var test = "";
var foo = test && 42;
Run Code Online (Sandbox Code Playgroud)

现在,foo从test分配中获取值.我很困惑.该空字符串是的Javascript的一个falsy值,那么,为什么在&&运营商在这种情况下会失败呢?

有人可以帮我解决这个问题吗?

SLa*_*aks 7

你误解了操作员.
foo = x && y将永远分配foo.

该&&运算符计算它的最左边的"falsy"操作数.

false && 42评估为假; "" && 42评估为"".

var foo = test && 42;分配false给foo.


xda*_*azz 4

你自己已经回答了你的问题。

var foo = test && 42;
Run Code Online (Sandbox Code Playgroud)

42foo 仅当test评估为 true时才会分配给。

因此,如果test是空字符串(评估为 false),则 42 不会分配给foo,foo将是空字符串。