Сегодня я только что написал сообщение о том, «Почему мы используем буквы типа« e »в e.preventDefault ()?» и я думаю, что мой ответ будет иметь смысл ...
Сначала давайте посмотрим на синтаксис addEventListener
Обычно это будет:
target.addEventListener (type, listener [, useCapture]);
И определение параметров addEventlistener:
type: Строка, представляющая тип события, которое нужно прослушать.
listener: Объект, который получает уведомление (объект, реализующий интерфейс Event), когда происходит событие указанного типа. Это должен быть объект, реализующий интерфейс EventListener, или функция JavaScript.
(Из MDN)
Но я думаю, что следует отметить одну вещь:
когда вы используете функцию Javascript в качестве слушателя, объект, реализующий интерфейс Event (объектное событие), будет автоматически назначен «первому параметру» функции. Итак, если вы используете function (e), объект будет назначен на «e», потому что «e» - единственный параметр функции (определенно первый!), тогда вы можете использовать e.preventDefault, чтобы что-то предотвратить ....
давайте попробуем пример, как показано ниже:
<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 v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
результат будет: [объект MouseEvent] 5 и вы предотвратите событие щелчка.
но если вы удалите знак комментария, например:
<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>
вы получите: 8 и ошибку : «Uncaught TypeError: e.preventDefault не является функцией в HTMLInputElement. (VM409: 69)».
Конечно, на этот раз событие щелчка не будет предотвращено, поскольку в функции снова была определена буква "e".
Однако, если вы измените код на:
<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>
все снова будет работать правильно ... вы получите 8, и событие щелчка будет предотвращено ...
Следовательно, «e» - это просто параметр вашей функции, и вам понадобится «e» в вашей функции (), чтобы получить «объект события», а затем выполнить e.preventDefault (). Это также причина, по которой вы можете заменить «e» на любые слова, не зарезервированные js.