freee,
1. UB на то и UB, что оно Undefined. Во всех существующих браузерах вернётся первый элемент с таким id, да. НО совершенно не факт что завтра не появится новый браузер который будет возвращать последний. Или вообще рандомный. И никто ему не запретит так делать ибо UB.:) Потому не вижу смысла удалять это уточнение. 2. Исторически вынесение идентификаторов в глобал изначально было стандартом, потом было исключено из стандарта и вроде даже(не уверен) из некоторых браузеров, и с html5 вернулось в стандарт. Мнения на этот счёт разные, однако бесконтрольное засорение глобальной области видимости среди js-программистов считается моветоном. Некоторые даже специально используют идентификаторы содержащие символы невозможные в переменных, дабы избежать замусоривания. Например: <input type="text" id=":textfield"> Так или иначе я бы не назвал это "ошибками в учебнике". Максимум недостаточная освещённость вопроса и то спорно. |
Цитата:
Кроме того, поиски getElementById, возможно, используют все те же глобальные переменные. А querySelector с решеткой использует getElementById... И так далее, дальше в лес - больше дров. |
freee, не там тормоза ищите. getElementById работает очень быстро. Это не может стать бутылочным горлышком ни в одном разумном случае.:)
|
Aetae,
Кстати, нет, щас проверил, никуда они не деваются, они просто недоступны в литеральной нотации, так что это вдвойне глупо <html> <head> </head> <body> <div id=":foo">foo</div> <script> alert(window[":foo"]) </script> </body> </html> |
Цитата:
|
freee, оно не верно. В глобале лишь ещё одна ссылка.
P.S. Не надо "гадать". Никогда. Интересно как работает - смотри спецификацию или код движка. |
Цитата:
|
freee, всё сложнее и проще. Нет никакого смысла нативному коду лезть в javascript'овский глобал.
|
Цитата:
|
Ваше представление о том как всё работает крайне ошибочно и наивно. Дискутировать никакого желания у меня нет.
Лет через пять, если не завяжете с этим делом, будете со смехом читать свои текущие посты. |
Часовой пояс GMT +3, время: 03:24. |