Javascript &&;评价问题

Javascript &&;评价问题,javascript,jquery,ecmascript-5,Javascript,Jquery,Ecmascript 5,据我所知,逻辑&&的工作原理如下 var test = false; var foo = test && 42; 如果第一个条件的计算结果为true,则此代码仅将42分配给foo。因此在本例中,foo将保持其当前值 我想知道为什么这个片段根本不起作用: var test = ""; var foo = test && 42; 现在,foo从test中获取赋值。我很困惑。空字符串是Javascripts falsy值之一,那么为什么在这种情况下&&操作符会失败呢

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

var test = false;
var foo = test && 42;
如果第一个条件的计算结果为
true
,则此代码仅将
42
分配给
foo
。因此在本例中,
foo
将保持其当前值

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

var test = "";
var foo = test && 42;
现在,
foo
test
中获取赋值。我很困惑。空字符串是Javascripts falsy值之一,那么为什么在这种情况下
&&
操作符会失败呢


有人能帮我解释一下这台机器的规格吗?

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

&&
运算符的计算结果为其最左侧的“falsy”操作数

false&&42
计算结果为false<代码>和&42的计算结果为
“”


var foo=test&&42
false
赋值给
foo

您自己已经回答了问题

var foo = test && 42;
42
仅当
test
评估为true时才会分配给
foo


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

@Yoshi,否,false
foo=test&&42
只会在test为false时将false指定给foo,如果test为false,则test的值将被指定给foo,否则,42将被指定。?因此在本例中,foo将保留其当前值。“不,它将变为
false
答案在您的问题中,
”“==false