Почему вы можете получить доступ к "событию", не передавая его в аргументах при использовании функций стрелки ES6 + Babel?
Я только что наткнулся на что-то, что я думаю, не должно быть правильным.
Код ниже не должен работать, так как событие не передается в аргументах:
var myFunc() {console.log(event.target.value)}
Но с функциями стрелок, использующими Babel для перехода с ES6, работают следующие
() => {console.log(event.target.value)}
Почему последний должен работать?
Более конкретный пример можно найти в строке 43 этого гиста, где я использую реакции и Бабель для переноса ES6 - удалить event
из аргов и все равно работает как положено.
1 ответ
В Internet Explorer (не уверен, что все версии) события передаются через window.event. Так что если вы используете IE при удалении события из списка аргументов, вы все равно можете ссылаться на объект глобального события.
Изменить: На самом деле это также доступно в других браузерах. Я только что проверил это в Chrome. Я не уверен, какие браузеры точно поддерживают это свойство.