据我所知,逻辑&&
的作用类似于以下
var test = false;
var foo = test && 42;
如果第一个条件评估为42
,则此代码会将foo
分配给true
。因此,在此示例中,foo
将保留其当前值。
我想知道为什么这个片段根本不起作用:
var test = "";
var foo = test && 42;
现在,foo
获取test
分配的值。我很困惑。 空字符串是Javascripts falsy values 之一,那么为什么&&
运算符会在这种情况下失败?
有人可以帮我解决这个问题吗?
答案 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不会分配给foo
,foo
将为空字符串。