0

三項演算子がどのように機能するかを理解しようとしていますが、この例に出くわしました:

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

どういう意味?AND演算子のように使用されていますか?これは通常のステートメントにどのように変換されますか? a=0 の前のコマは何を意味しますか? ありがとう!

4

3 に答える 3

2

それは三元ではありません。

また、そのグループ化演算子内のコンマは、基本的に、グループが常に最後の式の値、a=0つまり 0 を返すことを保証します。

この例は、常に false または 0 (これは false) に評価されます。

編集:

完全を期すために、ここに三項演算子を示します。

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

論理的には次のものと同じです。

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

&&AND 演算子です。左辺が true の場合、右辺を評価します (そして返します)。は,コンマ演算子です。(コンマ演算子は、その両側を左から右に評価し、右側を返します)。したがって、このコードは次のようになります。

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

(コードが 0 を返すことを除いて)

(私の母国語はCですので、間違っているかもしれませんが、この場合、javascript は C のように動作すると思います)

于 2012-01-23T02:22:12.587 に答える
0

&&演算子は論理 AND 演算子です。式を左から右に評価し、最初の偽の値または最後の式の値を返します。

最後の式に到達すると、それが何であれ、その値を返します。

そう:

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

xを "fred" に設定します。

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

yを に設定し0ます。

于 2012-01-23T02:21:25.890 に答える