Hoje acabei de escrever um post sobre "Por que usamos as letras como“ e ”em e.preventDefault ()?" e acho que minha resposta fará algum sentido ...
Primeiro, vamos ver a sintaxe de addEventListener
Normalmente será:
target.addEventListener (type, listener [, useCapture]);
E a definição dos parâmetros de addEventlistener são:
type: Uma string representando o tipo de evento a ser ouvido.
listener: O objeto que recebe uma notificação (um objeto que implementa a interface Event) quando ocorre um evento do tipo especificado. Deve ser um objeto que implementa a interface EventListener ou uma função JavaScript.
(De MDN)
Mas acho que há uma coisa que deve ser observada:
quando você usa a função Javascript como o ouvinte, o objeto que implementa a interface de evento (evento de objeto) será automaticamente atribuído ao "primeiro parâmetro" da função. Portanto, se você usar função (e), o objeto será atribuído a "e" porque "e" é o único parâmetro da função (definitivamente o primeiro!), então você pode usar e.preventDefault para prevenir algo ....
vamos tentar o exemplo abaixo:
<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>
o resultado será: [objeto MouseEvent] 5 e você evitará o evento de clique.
mas se você remover o sinal de comentário como:
<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>
você obterá: 8 e um erro : "Uncaught TypeError: e.preventDefault não é uma função em HTMLInputElement. (VM409: 69)".
Certamente, o evento click não será evitado desta vez. Porque o "e" foi definido novamente na função.
No entanto, se você alterar o código para:
<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>
tudo funcionará corretamente novamente ... você receberá 8 e o evento de clique será evitado ...
Portanto, "e" é apenas um parâmetro de sua função e você precisa de um "e" em sua função () para receber o "objeto de evento" e realizar e.preventDefault (). Essa também é a razão pela qual você pode alterar o "e" para qualquer palavra que não esteja reservada por js.