0

次のコードは、「JavaScript by Example Second Edition」からのものです。 例 15.24
コードがわかりません var evt = e || window.event; //ブラウザの違い
var evt は true または false であるべきだと思うので、evt.target は null である必要があります。

function colorText(e){
  var evt = e || window.event; //Browser differences
  var evtTarget= evt.target || evt.srcElement;
  if(evtTarget.id=="first"){
div1.className="red";
}
else if(evtTarget.id == "second"){
div2.className="blue";
}
else{ div3.className="green";}
}
4

5 に答える 5

4

これまでの答えはすべて技術的に正しいです。全文:

|| 演算子は、ブール値にキャストした結果が true の場合、最初のオペランドの値を返します。それ以外の場合は、2 番目のオペランドの値を返します。 ES5仕様

null や未定義など、さまざまな値が「偽」です。偽物とは何かを正確に突き止めるのは難しい場合がありますが、それらを当てにすることはできます。これは、さまざまなブラウザーに存在しない可能性のある変数やプロパティをキャッチするのに役立ちます. ただし、未定義の変数を自分でチェックしたい場合は、通常、代わりに typeof を使用することをお勧めします。

于 2012-09-27T02:03:52.963 に答える
2

If e is not set, meaning you did not call the function with a parameter, then evt will be window.event. If e is set, then evt will be whatever e is.

There's a concept known as short circuit evaluation and that means if the condition is met without fully evaluating it, then it doesn't need to fully evaluate it. That is the case here. If e is set, you don't care what window.event is, because you already have something you can set evt to.

于 2012-09-27T01:59:57.597 に答える
1
var evt = e || window.event;

この行は、e が空でない場合、変数 evt を e に設定します。それ以外の場合 (たとえば、e がこの関数に渡されなかった場合など、e が null の場合)、evt は window.event に設定されます。

于 2012-09-27T02:00:48.283 に答える
1

キーワード式は、 null falsey でない場合は最初のオペランドの値を返し、それ以外の場合は 2 番目の値を返します。

Javascript は弱い型付けなので、いつでも || を使用できます。false または null でないものはすべて true と評価されるため、ブール値として。しかし、実際にはここで値 s を返しています。したがって、 (引数) にevtなるか、存在しない場合は falsey の値になり、 になります。ee window.event

于 2012-09-27T02:00:53.483 に答える
1

No, in JavaScript || does not cast to boolean, instead it short-circuits to which ever value (from left to right) first evaluates as truthy.

It preserves the expression's evaluation.

于 2012-09-27T01:59:57.047 に答える