&&评估问题
据我所知,逻辑&&
工作原理如下
var test = false; var foo = test && 42;
仅当第一个条件被评估为true
,此代码才会将42
分配给foo
。 所以在这个例子中, foo
将保持其当前值。
我想知道为什么这个片段根本不起作用:
var test = ""; var foo = test && 42;
现在, foo
从test
分配中获取值。 我很困惑。 空字符串是Javascripts 虚假值之一 ,那么为什么&&
运算符会在这种情况下失败?
有人可以帮我解决这个问题吗?
你自己回答了你的问题。
var foo = test && 42;
仅当test
评估为真时,才会将42
分配给foo
。
因此,如果test
为空字符串(计算为false),则42将不会分配给foo
, foo
将为空字符串。
你误解了操作员。
foo = x && y
将始终指定foo
。
&&
运算符求值为最左边的“falsy”操作数。
false && 42
评估为false; "" && 42
评估为""
。
var foo = test && 42;
为foo
指定false
。