我正在努力了解三元运算符的工作原理,我遇到了这个例子:
b.d >= mystr.length && (function1(b, a), a=0);
什么&&意思?它是否像AND运算符一样使用?这如何转化为常规声明? a = 0之前的昏迷意味着什么?谢谢!
答案 0 :(得分:2)
这不是三元组。
此外,该分组运算符中的逗号基本上确保该组始终返回最后一个表达式a=0
的值,即0。
该示例将始终评估为false或0(这是假的)。
编辑:
为了完整起见,这里有一个三元运算符:
a > b ? functionIfTrue() : functionIfFalse();
逻辑上与:
相同if ( a > b ){
functionIfTrue();
} else {
functionIfFalse();
}
答案 1 :(得分:1)
&&
是AND运算符。如果它的左边是真的,它会评估右侧(并返回它)。 ,
是逗号运算符。 (逗号运算符从左到右评估其两侧,并返回右侧)。所以这段代码就像:
if (b.d>=mystr.lengh) {
function1(b,a);
a=0;
}
(除了您的代码返回0)
(我的母语是C
,所以也许我错了,但我认为在这种情况下,javascript就像C一样工作
答案 2 :(得分:0)
&&
运算符是逻辑AND运算符。它从左到右计算表达式,并返回第一个falsey值或最后一个表达式的值..
如果它到达最后一个表达式,它将返回其值,无论是什么。
所以:
var x = (1 < 2) && ( 4 > 3) && 'fred';
将 x 设置为“fred”,而:
var y = (1 < 2) && 0 && 'fred';
将 y 设置为0
。