&&评估问题

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

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

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

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

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

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

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

你自己回答了你的问题。

 var foo = test && 42; 

仅当test评估为真时,才会将42分配给foo

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

你误解了操作员。
foo = x && y始终指定foo

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

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

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