Hoy acabo de escribir una publicación sobre "¿Por qué usamos letras como" e "en e.preventDefault ()?" y creo que mi respuesta tendrá algún sentido ...
Primero, veamos la sintaxis de addEventListener
Normalmente será:
target.addEventListener (type, listener [, useCapture]);
Y la definición de los parámetros de addEventlistener son:
tipo : una cadena que representa el tipo de evento a escuchar.
oyente : el objeto que recibe una notificación (un objeto que implementa la interfaz de eventos) cuando ocurre un evento del tipo especificado. Debe ser un objeto que implemente la interfaz EventListener o una función de JavaScript.
(De MDN)
Pero creo que hay una cosa que se debe remarcar:
cuando usas la función Javascript como oyente, el objeto que implementa la interfaz del evento (evento del objeto) se asignará automáticamente al "primer parámetro" de la función. Entonces, si usas function (e), el objeto se asignará a "e" porque "e" es el único parámetro de la función (¡definitivamente el primero!), entonces puedes usar e.preventDefault para evitar algo ....
probemos el ejemplo de la siguiente manera:
<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>
el resultado será: [object MouseEvent] 5 y evitará el evento de clic.
pero si elimina el signo de comentario 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>
obtendrá: 8 y un error : "Uncaught TypeError: e.preventDefault no es una función en HTMLInputElement. (VM409: 69)".
Ciertamente, el evento de clic no se evitará esta vez, porque la "e" se definió nuevamente en la función.
Sin embargo, si cambia el código a:
<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>
todo volverá a funcionar correctamente ... obtendrá 8 y se evitará el evento de clic ...
Por lo tanto, "e" es solo un parámetro de su función y necesita una "e" en su función () para recibir el "objeto de evento" y luego realizar e.preventDefault (). Esta es también la razón por la que puede cambiar la "e" por cualquier palabra que no esté reservada por js.