Hari ini saya baru saja menulis postingan tentang "Mengapa kita menggunakan huruf seperti" e "di e.preventDefault ()?" dan saya pikir jawaban saya akan masuk akal ...
Pertama, mari kita lihat sintaks addEventListener
Biasanya akan menjadi:
target.addEventListener (type, listener [, useCapture]);
Dan definisi dari parameter addEventlistener adalah:
type: Sebuah string yang merepresentasikan tipe event yang akan didengarkan.
listener: Objek yang menerima notifikasi (objek yang mengimplementasikan antarmuka Event) ketika sebuah event dari tipe yang ditentukan terjadi. Ini harus berupa objek yang mengimplementasikan antarmuka EventListener, atau fungsi JavaScript.
(Dari MDN)
Tapi saya pikir ada satu hal yang harus diperhatikan:
Ketika Anda menggunakan fungsi Javascript sebagai pendengar, objek yang mengimplementasikan antarmuka Acara (acara objek) akan secara otomatis ditetapkan ke "parameter pertama" dari fungsi tersebut. Jadi, jika Anda menggunakan function (e), objek akan ditetapkan ke "e" karena "e" adalah satu-satunya parameter fungsi (pasti yang pertama!), maka Anda dapat menggunakan e.preventDefault untuk mencegah sesuatu ....
mari kita coba contoh seperti di bawah ini:
<p>Please click on the checkbox control.</p>
<form>
<label for="id-checkbox">Checkbox</label>
<input type="checkbox" id="id-checkbox"/>
</div>
</form>
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
//var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
hasilnya akan menjadi: [object MouseEvent] 5 dan Anda akan mencegah event click.
tetapi jika Anda menghapus tanda komentar seperti:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
Anda akan mendapatkan: 8 dan kesalahan : "Uncaught TypeError: e.preventDefault bukan fungsi di HTMLInputElement. (VM409: 69)".
Tentu saja, peristiwa klik tidak akan dicegah kali ini. Karena "e" telah didefinisikan lagi dalam fungsi tersebut.
Namun, jika Anda mengubah kode menjadi:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
event.preventDefault();
}, false);
</script>
semuanya akan bekerja dengan baik lagi ... Anda akan mendapatkan 8 dan peristiwa klik dicegah ...
Oleh karena itu, "e" hanyalah parameter dari fungsi Anda dan Anda memerlukan "e" dalam fungsi () untuk menerima "objek peristiwa" lalu lakukan e.preventDefault (). Ini juga alasan mengapa Anda bisa mengubah "e" menjadi kata-kata yang tidak dipesan oleh js.