&安培;&安培;评估问题

时间:2012-08-28 15:02:17

标签: javascript jquery ecmascript-5

据我所知,逻辑&&的作用类似于以下

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

如果第一个条件评估为42,则此代码会将foo分配给true 。因此,在此示例中,foo将保留其当前值。

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

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

现在,foo获取test分配的值。我很困惑。 空字符串是Javascripts falsy values 之一,那么为什么&&运算符会在这种情况下失败?

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

2 个答案:

答案 0 :(得分:7)

你误解了操作员。
foo = x && y始终分配foo

&&运算符求值为最左边的“falsy”操作数。

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

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

答案 1 :(得分:4)

你自己回答了你的问题。

var foo = test && 42;
仅当42评估为真时,

foo才会被分配到test

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