6

据我所知,逻辑&&工作如下

var test = false;
var foo = test && 42;

当第一个条件被评估为时,此代码才会分配42给。所以在这个例子中,将保持它的当前值。foo truefoo

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

var test = "";
var foo = test && 42;

现在,从assigned中foo获取值。test我很困惑。空字符串是 Javascript 的虚假值之一,那么为什么&&操作符会在这种情况下失败呢?

有人可以帮我看看这个规格吗?

4

2 回答 2

7

你误会了运营商。
foo = x && y始终分配foo.

&&运算符对其最左边的“假”操作数求值。

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

var foo = test && 42;分配falsefoo.

于 2012-08-28T15:03:05.947 回答
4

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

var foo = test && 42;

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

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

于 2012-08-28T15:17:49.797 回答