あなたの習慣について教えてください!!

JavaScriptの論理演算子について質問です。
「alert(e.target||e.srcElement);」の結果がtrue かfalseではなくて「object HTMLHtmlElement」となるのは何故なのでしょうか?
JavaScriptでは"||"は論理演算子ではないのでしょうか?

-----------------------------------------------------------------------
<body>
<a id="id1">Textarea</a>
<script>
(function () {
  var i = document.getElementById ("id1");

  document.addEventListener("dblclick", addEL, false);

  function addEL (e) {
alert(e.target||e.srcElement);
  }
}) ();
</script>
</body>

A 回答 (2件)

|| は「バイナリ論理演算子」で論理演算子の一種です。


http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma26 …
https://developer.mozilla.org/ja/JavaScript/Refe …

---
// 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;
---

疑問を持つのは大切なことですが、もう少し自分で調べてから質問するとより理解が深まるのではないかと思います。
# リファレンスを読めばもう一歩進んだ質問ができるのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
結局のところ、論理値として評価して(Boolean型に変換して)trueを返す場合というのは
・空でない、
・0でない数値
・オブジェクト
・Infinity
・-Infinity
の場合なんですね。
ありがとうございました。

認識あってますでしょうか?
(少し心配です。)

お礼日時:2012/01/03 03:06

論理演算子||は、


 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のプロパティを返すということでしょうか?

解釈間違えていたら教えて頂きたいです。
宜しくお願いいたします。

補足日時:2012/01/03 02:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!