私はどのように三項演算子の仕事を理解しようとしていると私は、この例に出くわした:奇妙三項演算子のJavascript
b.d >= mystr.length && (function1(b, a), a=0);
を& &は何を意味するのでしょうか?それはAND演算子のように使用されていますか?これはどのようにして通常の声明に変換されますか? a = 0の前の昏睡はどういう意味ですか?ありがとう!
私はどのように三項演算子の仕事を理解しようとしていると私は、この例に出くわした:奇妙三項演算子のJavascript
b.d >= mystr.length && (function1(b, a), a=0);
を& &は何を意味するのでしょうか?それはAND演算子のように使用されていますか?これはどのようにして通常の声明に変換されますか? a = 0の前の昏睡はどういう意味ですか?ありがとう!
&&
はAND演算子です。それの左側が真であれば、右側を評価して返します。 ,
はカンマ演算子です。 (カンマ演算子は、左右を評価し、左から右に戻り、右辺を返します)。したがって、このコードは次のようである:
if (b.d>=mystr.lengh) {
function1(b,a);
a=0;
}
(あなたのコードの戻り0点を除いて)
(私の母国語がC
なので、多分私は間違っているんだけど、私はこのケースでは、Javascriptの作品のようなことを考えますC)
&&
演算子は論理AND演算子です。式を左から右に評価し、最初の偽値または最後の式の値を返します。
最後の式になると、その値を返します。したがって
:
var x = (1 < 2) && (4 > 3) && 'fred';
セットX一方、 "フレッド" に:
var y = (1 < 2) && 0 && 'fred';
セットY0
します。
これは三元ではありません。
また、そのグループ化オペレータ内部コンマは、基本的には例が常にfalsyある(偽または0に評価することが0
であり、グループは常に最後の式a=0
の値を返すことを保証します)。
編集:
完全を期すために、ここでは三項演算子です:
a > b ? functionIfTrue() : functionIfFalse();
それは論理的に同じです。
if (a > b){
functionIfTrue();
} else {
functionIfFalse();
}
ありがとうございました。それは普通の声明のように見えるだろうか? "> ="とは何ですか?三元演算子ではありませんか?どのような条件下で関数が呼び出されるのでしょうか? – user1015551
'> ='は "より大きいか等しい"を意味します。三項演算子は、if/else文を書くための簡潔な方法です。 この場合、 'function1'は' mystr.length'が 'b.d'の値よりも小さい場合にのみ呼び出されます。 'mystr.length'が' bより小さくない場合。d& 'の後の残りの文は重要ではないため、評価されません。 –
これは三項演算子ではありません。 –
&&は多国語であるため、ANDです。しかし、また、重複のhttp://stackoverflow.com/q/8916679/422184 – Ktash
これはひどく読めないコードです。誰がそのようなコードを書いていますか? ಠ_ಠ –