嗨,我正准备接受采访。 我看到了这个问题。
如果var a=2, var b =3
a&&b
的价值是多少?
给出的答案是 3 。
我无法理解为什么这是答案。 你能帮我吗.. 感谢。
答案 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
所以&&返回操作数的值false
和true
。
为您的例子,
2 && 3 // return 3 because 2 is true