Книга: JavaScript. Подробное руководство, 6-е издание
3.10.2. Переменные как свойства
3.10.2. Переменные как свойства
При объявлении глобальной переменной в JavaScript в действительности создается свойство глобального объекта (раздел 3.5). Если глобальная переменная объявляется с помощью инструкции var
, создается ненастраиваемое свойство (раздел 6.7), т. е. свойство, которое невозможно удалить с помощью оператора delete
. Как уже отмечалось выше, если не используется строгий режим и необъявленной переменной присваивается некоторое значение, интерпретатор JavaScript автоматически создает глобальную переменную. Переменные, созданные таким способом, становятся обычными, настраиваемыми свойствами глобального объекта и могут быть удалены:
var truevar = 1; // Правильно объявленная глобальная переменная, неудаляемая.
fakevar = 2; // Создается удаляемое свойство глобального объекта.
this.fakevar2 = 3; // То же самое.
delete truevar // => false: переменная не была удалена
delete fakevar // => true: переменная удалена
delete this.fakevar2 // => true: переменная удалена
Глобальные переменные в языке JavaScript являются свойствами глобального объекта, и такое положение вещей закреплено в спецификации ECMAScript. Это не относится к локальным переменным, однако локальные переменные можно представить как свойства объекта, ассоциированного с каждым вызовом функции. В спецификации ECMAScript 3 этот объект называется «объектом вызова» (call object
), а в спецификации ECMAScript 5 он называется «записью с описанием окружения» (declarative environment record
). Интерпретатор JavaScript позволяет ссылаться на глобальный объект с помощью ключевого слова this, но он не дает никакой возможности сослаться на объект, в котором хранятся локальные переменные. Истинная природа объектов, в которых хранятся локальные переменные, зависит от конкретной реализации и не должна заботить нас. Однако сам факт наличия объектов с локальными переменными имеет большое значение, и эта тема будет рассматриваться в следующем разделе.
- Свойства StdOut, StdIn и StdErr
- Где устанавливаются переменные окружения
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- 1.2.3. Константы, переменные и типы
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- Ключевые свойства форм
- 1.1.5. Свойства и особенности туруслуг и турпродуктов
- 22.3.3. Переменные окружения
- Свойства меню Пуск
- Работа с дополнительными свойствами файлов