为什么var c =“a”|| “b”返回c =“a”和var c =“a”&& “b”返回c =“b”?

时间:2015-12-17 05:15:30

标签: javascript logic operators

我最近收到了这个问题var c = "a" || "b",那么c是什么,var c = "a" && "b"在这种情况下c是什么?并解释原因?

我尝试在jsfiddle中运行代码这是我得到的var c = "a" || "b"返回c =“a”而var c = "a" && "b"返回c = b。任何人都可以解释为什么会这样吗?

3 个答案:

答案 0 :(得分:3)

对于OR ||运算符,任何一个条件都需要true,因为第一个"a"不等于false,所以第一个值已分配给c

对于AND &&运算符,两个条件都必须为true,因此在检查完最后条件后(并且两者都不是falseb是已分配到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;和运算符,必​​须对这两个表达式进行求值以确定语句的真实性。