我最近收到了这个问题var c = "a" || "b"
,那么c
是什么,var c = "a" && "b"
在这种情况下c
是什么?并解释原因?
我尝试在jsfiddle中运行代码这是我得到的var c = "a" || "b"
返回c =“a”而var c = "a" && "b"
返回c = b。任何人都可以解释为什么会这样吗?
答案 0 :(得分:3)
对于OR ||
运算符,任何一个条件都需要true
,因为第一个"a"
不等于false
,所以第一个值已分配给c
。
对于AND &&
运算符,两个条件都必须为true
,因此在检查完最后条件后(并且两者都不是false
)b
是已分配到c
类似地
var c = "a" && "b" && "d"
将输出"d"
和
var c = false || "a" || "b"
将输出"a"
答案 1 :(得分:1)
运行此代码段,它将演示&&返回表达式的右侧和||如果已定义,则返回快递的左侧。如果是||的左侧表达式未定义,它使用右侧作为默认值。
function ampAmp(target, a, b) {
target.innerText = a && b;
}
function barBar(target, a) {
target.innerText = a || "defaultValue";
}
ampAmp(document.getElementById("ampAmp1"), 1, 2);
ampAmp(document.getElementById("ampAmp2"), 2);
barBar(document.getElementById("barBar1"));
barBar(document.getElementById("barBar2"), 1);
<p> ampAmp1 returns:
<span id="ampAmp1"></span>
</p>
<p> ampAmp2 returns:
<span id="ampAmp2"></span>
</p>
<p> barBar1 returns:
<span id="barBar1"></span>
</p>
<p> barBar2 returns:
<span id="barBar2"></span>
</p>
答案 2 :(得分:0)
答案是当||时到达操作员,脚本看起来没有进一步发现&#34; a&#34;是非零的。与&amp;&amp;和运算符,必须对这两个表达式进行求值以确定语句的真实性。