奇怪的三元运算符Javascript

时间:2012-01-23 02:12:33

标签: javascript ternary

我正在努力了解三元运算符的工作原理,我遇到了这个例子:

b.d >= mystr.length && (function1(b, a), a=0);

什么&&意思?它是否像AND运算符一样使用?这如何转化为常规声明? a = 0之前的昏迷意味着什么?谢谢!

3 个答案:

答案 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