Mengapa Pengendali Acara dalam Gelung JavaScript Perlu Ditutup?

Barbara Streisand
Lepaskan: 2024-11-06 15:44:02
asal
456 orang telah melayarinya

Why Do Event Handlers in JavaScript Loops Need Closures?

Pengendali Acara dalam Gelung JavaScript: Keperluan untuk Penutupan

Dalam JavaScript, apabila bekerja dengan pengendali acara dalam gelung, mungkin perlu untuk melaksanakan penutupan untuk memastikan lulus parameter yang betul. Pertimbangkan kod berikut:

<code class="javascript">for (var i = 0; i < blah.length; i++) {
  var select = document.createElement('select');
  select.onchange = function() {
    onStatusChanged(select, callid, anotherid);
  };
}
Salin selepas log masuk

Dalam senario ini, apabila peristiwa onchange dicetuskan, nilai yang dihantar kepada onStatusChanged() adalah konsisten merentas semua elemen), c (panggilan semasa) dan a (id lain semasa)

  • Penutupan serta-merta memanggil fungsi, menghantar arus nilai s, c dan a
  • Apabila peristiwa onchange dicetuskan, penutupan dilaksanakan, memastikan onStatusChanged() menerima nilai yang betul untuk setiap