こんにちは、この JavaScript スニペットの意味は何ですか。(evt) の部分はとても紛らわしいです.. evt はブール値ではありません。使い方?
function checkIt(evt) {
evt = (evt) ? evt : window.event
var charCode = (evt.which) ? evt.which : evt.keyCode
}
こんにちは、この JavaScript スニペットの意味は何ですか。(evt) の部分はとても紛らわしいです.. evt はブール値ではありません。使い方?
function checkIt(evt) {
evt = (evt) ? evt : window.event
var charCode = (evt.which) ? evt.which : evt.keyCode
}
evt = (evt) ? evt : window.event
は単なるインラインif
構文です。これは、次のコードと同等です。
if (evt) {
evt = evt;
} else {
evt = window.event;
}
evt
本当なら放っておかれevt
ます。真実でない場合evt
は、 に置き換えられwindow.event
ます。
イベントリスナー向けです。
IE6-IE8 は、W3C 標準とはまったく異なるイベント メソッドを使用していました。
イベントが発生すると、W3C 標準ブラウザはコールバックでイベント オブジェクトを渡します。
function keyPressed (e) { /* do stuff with e */ }
あなたの場合、それはkeydown
(または を使用する他の何かkeyCode
)です。
IE はこれをサポートしていませんでしたwindow.event
が、イベントが発生するたびに更新されました。
したがって、関数はオブジェクトが渡されたかどうかを確認しています。
evt = (evt) ? evt : window.event;
// does `evt` exist, and is it anything but '', 0, false, null, undefined, NaN
// yes: evt = itself (W3C)
// no: evt = window.event (IE6-8)
次に、コードはevt.which
存在するかどうかを尋ね、keyCode の取得元を見つけようとします。
と の場合は、evt.keyCode
最新のブラウザーで使用する必要があるものです。keydown
keyup
そのような代入式はright から leftに評価されるため、次のことを意味します。
evt
の値を持っている場合、この値を再度割り当てますevt
window.event
そうでない場合は、その内容に関係なくの値を割り当てますevt
つまり、evt
パラメーターに値がある場合はその値を保持し、値がない場合はwindow.event
代わりに使用します。
および?
':' 記号は、三項 if 演算子の一部です。
var w = x ? y : z;
したがって、上記では、 が真または偽の値であると見なされるかどうかに応じて、y
またはに割り当てます。z
w
x
関数が引数checkIt
を渡さずに呼び出された場合、つまり関数内で変数の値がif 条件内として扱われる場合。evt
checkIt()
evt
undefined
false