私は学習中ですevent.target
。この 2 つの違いは明確に理解していると思います。しかし、値が null になるevent.currentTarget
状況に陥っています。event.currentTarget
以下は HTML および JS コード スニペットです。
HTMLコード
<form id="form">
This is a form
</form>
JavaScript コード
form.addEventListener('click', func);
function func(event) {
console.log(event.target.tagName); //line1
console.log(event.currentTarget.tagName); //line2
setTimeout(()=> {
console.log(event.target.tagName); //line3
console.log(event.currentTarget.tagName); //line4
}, 0) ;
}
疑問なのは、行 1 と行 3 でevent.target
同じ値が得られたことです。しかし、行 2 と行 4 では値が異なりますevent.currentTarget
。
3 行目の出力は 'form' ですが、4 行目では次のようになります。
キャッチされない TypeError: null のプロパティ 'tagName' を読み取ることができません。
つまりcurrentTarget
4行目はnullです。
の値が4 行目にcurrentTarget
ある理由を説明できますかnull
?
ベストアンサー1
https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget行に注意してください
注記:の値は、
event.currentTarget
イベントが処理されている間のみ使用できます。console.log()
イベント オブジェクトを変数に格納し、currentTarget
コンソールでキーを検索すると、その値は null になります。