使用&&amp ;;无法看到正确的值操作者

时间:2015-12-19 06:19:28

标签: javascript

嗨,我正准备接受采访。 我看到了这个问题。

如果var a=2, var b =3 a&&b的价值是多少? 给出的答案是 3

我无法理解为什么这是答案。 你能帮我吗.. 感谢。

2 个答案:

答案 0 :(得分:2)

&安培;&安培;和||不要创造真或假。它们返回一个操作数。

二元运算符的行为与其他基于c的语言不同。详细了解truthy and falsey values here

&&定义如下。

  

如果第一个操作数是真值,则结果是第二个操作数。否则它是第一个。

实施例

false && true      // false the first operand is falsey
0 && true          // 0. 0 is a falsy value so the first value is used
1 && 0             // 0. The first value is truthy 
                   // so the second value is used
'hello' && 'world' // 'world' the first value is truthy 
                   // so yield the second value.

||定义如下。

  

如果第一个操作数是真值,则结果是第一个操作数。否则它是第二个。

实施例

false || true      // true, first value is falsey so yield second
0 || true          // true, first value is falsey so yield second
1 || 0             // 1, first value is truthy use it.
'hello' || 'world' // 'hello', first value is truthy so yield it.

&&||是“短路”

这意味着有一些方法可以构造代码,以便不会对所有表达式进行求值。这有时很方便,但是是双刃剑。

function launchNukes() { /* TODO */ }
0 && launchNukes(); // nukes do not fire
1 && launchNukes(); // nukes fire
0 || launchNukes(); // nukes fire
1 || launchNukes(); // nukes do not fire

答案 1 :(得分:1)

&安培;&安培;是一个AND运算符,就像大多数其他地方一样。如果第一个操作数为假,大多数语言(包括JavaScript)将停止评估AND运算符。

你可以这样读:

  • 如果a为真,则返回值为b
  • 如果a为false,则返回值为a

所以&&返回操作数的值falsetrue

为您的例子,

2 && 3 // return 3 because 2 is true