Я могу объявить переменную с именем «документ» и установить для нее что-то вроде «тест», однако document.getElementById все равно будет работать! Почему?

0
Marlon 4 Окт 2022 в 21:40

2 ответа

Потому что зарезервированные слова являются частью грамматики языка, тогда как document — это специальный объект, созданный браузером, к которому может получить доступ JavaScript.

Подумайте об этом так: если бы вы использовали JavaScript для написания сценария командной строки, не было бы объекта документа, верно? Однако будут такие вещи, как for, if и function, поскольку они являются частями языка.

3
Daniel Gimenez 4 Окт 2022 в 21:43
Да, документ - это просто еще одна переменная/имя объекта, как и любая другая.
 – 
Sharjeel Ahmed
4 Окт 2022 в 21:50

В контексте браузера глобального масштаба window имеет Свойство только для чтения document .

Когда вы пишете document, вы действительно ссылаетесь на window.document.

Таким образом, запись document = "test" эквивалентна записи window.document = "test".

Установка свойства только для чтения выдаст TypeError в строгий режим, и автоматический сбой в нестрогом режиме.

'use strict';

// This line will throw an error in strict mode: `TypeError: setting getter-only property "document"`
document = "test";

Кроме того, если вы должны написать что-то вроде var document = "test", на самом деле вы не объявляете повторно document, так как он уже существует в глобальной области видимости. Если бы вместо этого вы написали let document = "test" или const document = "test", вы бы получили SyntaxError: повторное объявление ненастраиваемого глобального документа свойств.

let document = "test";
1
romellem 4 Окт 2022 в 21:58