0

我试图了解三元运算符的工作原理,我遇到了这个例子:

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

这是什么意思?它像 AND 运算符一样使用吗?这如何转化为常规语句?a=0 之前的昏迷是什么意思?谢谢!

4

3 回答 3

2

那不是三元。

此外,该分组运算符中的逗号基本上确保该组将始终返回最后一个表达式的值a=0,即 0。

该示例将始终评估为假或 0(这是假的)。

编辑:

为了完整起见,这里有一个三元运算符:

a > b ? functionIfTrue() : functionIfFalse();

它在逻辑上等同于:

if ( a > b ){
    functionIfTrue();
} else {
    functionIfFalse();
}
于 2012-01-23T02:23:09.830 回答
1

&&是 AND 运算符。如果左侧为真,则评估右侧(并返回)。是,逗号运算符。(逗号运算符评估其两侧,从左到右,并返回右侧)。所以这段代码就像:

if (b.d>=mystr.lengh) {
 function1(b,a);
 a=0;
}

(除非您的代码返回 0)

(我的母语是C,所以也许我错了,但我认为在这种情况下,javascript 像 C 一样工作)

于 2012-01-23T02:22:12.587 回答
0

&&运算符是逻辑 AND 运算符。它从左到右计算表达式并返回第一个 false 值或最后一个表达式的值。

如果它到达最后一个表达式,它会返回它的值,不管它是什么。

所以:

var x = (1 < 2) && ( 4 > 3) && 'fred';

x设置为“fred”,而:

var y = (1 < 2) && 0 && 'fred';

y设置为0

于 2012-01-23T02:21:25.890 回答