- ベストアンサー
JavaScriptの論理演算子について
- JavaScriptの論理演算子について質問です。
- 「alert(e.target||e.srcElement);」の結果がtrue かfalseではなくて「object HTMLHtmlElement」となるのは何故なのでしょうか?
- JavaScriptでは"||"は論理演算子ではないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
|| は「バイナリ論理演算子」で論理演算子の一種です。 http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.11 https://developer.mozilla.org/ja/JavaScript/Reference/Operators/Logical_Operators --- // 1-1. A をBoolean型に型変換し、true を返すなら A を返します。 // 1-2. A をBoolean型に型変換し、false を返すなら B を返します。 var x = A || B; // 1-1. A をBoolean型に型変換し、false を返すなら B を返します。 // 2-1. B をBoolean型に型変換し、false を返すなら C を返します。 var y = A || B || C; --- 疑問を持つのは大切なことですが、もう少し自分で調べてから質問するとより理解が深まるのではないかと思います。 # リファレンスを読めばもう一歩進んだ質問ができるのではないでしょうか。
その他の回答 (1)
- Werner
- ベストアンサー率53% (395/735)
論理演算子||は、 A || B とした場合、Aが真のときにはAが、Aが偽の時にはBが返却されます。 なお、Aが真の時にはBは評価されません。これをショートサーキットといいます。 JavaScriptに限らず||演算子はたいていの言語でこんな挙動します。 上記の挙動を利用して、 if(A){x=A;}else{x=0;} を x = A || 0; と書いたりできます。
補足
有難うございます。 何分未熟なもので、自分なりに解釈した結果を確認させて頂きたいと思います。 >>if(A){x=A;}else{x=0;} >>を >>x = A || 0; >>と書いたりできます。 if(A){}のAはbool型であるかどうかに関係なく、0以外だった場合はx=Aになり、 それ以外の場合x=0となるということで良いでしょうか? つまり、「e.target||e.srcElement」についてもe.targetが存在すればe.targetのプロパティを返し、 そうでなければe.srcElementのプロパティを返すということでしょうか? 解釈間違えていたら教えて頂きたいです。 宜しくお願いいたします。
お礼
ありがとうございます。 結局のところ、論理値として評価して(Boolean型に変換して)trueを返す場合というのは ・空でない、 ・0でない数値 ・オブジェクト ・Infinity ・-Infinity の場合なんですね。 ありがとうございました。 認識あってますでしょうか? (少し心配です。)