为什么这个函数返回0
我想弄清楚为什么这个javascript函数返回0
当this.position.startOffset
值是0
但不是当值是0
以外的数字。为什么这个函数返回0
ready: function() {
return (this.position.startOffset
&& this.position.endOffset
&& this.position.representation.trim().length >= 0
&& this.text.id
&& this.user.id
&& this.concept);
}
&&
链将停止评估第一个非真(假)值并返回它。由于0
是虚假的,因此在遇到时会返回。如果没有遇到falsy值,则返回最后一个值:
var a = 55 && [] && 0 && false && true; // yeild 0 as it is the first falsy value to encounter
console.log("a:", a);
var b = 30 && true && [] && "haha"; // yeild "haha" as it is the last value (no falsy value encountered)
console.log("b:", b);
Falsy值:
null
undefined
- 空字符串
''
或""
- 人数
0
- 布尔
false
NaN
好的答案! JavaScript真的很奇怪..总是希望使用打字稿或其他不依赖非布尔运算的布尔操作的构造。 – KillPinguin
'NaN'也是麻烦的。 –
@FelixKling facepalm !!!谢谢。 –
发生这种情况是由于javascript在布尔表达式中处理数字的原因。 如果a和(& &)语句中的第一个参数返回0,则不会评估正确的参数,并返回0。
看起来像它的评估布尔值,真或假,1或0 ...是,用意何在? – kvr
在JavaScript中,逻辑“和”运算符('&&')返回第一个虚假值。 0是虚假的,所以它会返回它。 – Ivar
你期望它返回什么? – epascarello