Почему * должны * удалять [] и удалять разные?

Используйте первую форму или оболочку, такую ​​как jQuery. Вторая форма

var myObj = myDomObect;

Переведена на

var myObj = window["myDomObect"];

Это «работает» из-за старого gk , в котором идентификаторы были выставлены как глобальные свойства окна (IIRC это была неудача с самого начала), и поэтому мы по-прежнему благословлены поведением 20 лет спустя .. и да, будет работать в самом последнем Chrome.

Однако такая стенограмма должна использоваться not по нескольким причинам:

  1. Она не будет работать так, как изначально написана в «строгом режиме» (но она будет работать со второй формой)
  2. Он не передает операцию, а именно, что элемент DOM запрашивается / извлекается (по идентификатору).
  3. Он не работает для идентификаторов, которые сталкиваются с окном свойства; например.
    приведет к «неожиданному поведению» при доступе по этому пути. (Это не влияет на код getElementById, который правильно использует локальные переменные var в функции.)
  4. Поведение не определяется, если в документе существуют повторяющиеся идентификаторы (которые является разрешен ); поведение для getElementById было кодифицировано DOM 4: метод getElementById (elementId) должен возвращать первый элемент [с идентификатором] в порядке дерева. "

См. также:

13
задан River 19 October 2017 в 14:31
поделиться