Объяснение этой проверки Javascript

#javascript #dom-events

#javascript #dom-события

Вопрос:

 function doSomething(e) {
    var targ;
    if (!e) var e = window.event; //<<<< what does it do this check?
    if (e.target) targ = e.target;
}
  

Зачем нам нужно это проверять?

Ответ №1:

Это добавляет совместимости со старыми браузерами (Internet Explorer?), Которые не поддерживали передачу event объекта обработчикам, но вместо этого определяли их в объекте window.

Также var не требуется в var e = window.event , потому что он уже объявлен (параметр).

Это также может быть записано как e = e || window.event;

Ответ №2:

В основном это if проверяет, установлена ли e переменная. Если это не так — ему присваивается значение window.event (произошедшее событие window)

Комментарии:

1. так нам действительно нужно это проверять? можем ли мы просто предположить, что ‘e’ получит значение в любом случае?

2. @YoniGeek То, что сказали другие ребята (Shurdoof и Alex R.), это для совместимости с браузерами, e будет установлено в стандартных браузерах, но не window.event (только IE), поэтому, если вы назначите без проверки в браузере W3C, вы получите пустое значение в e