Конспект JS-course

Глобальный объект

Источник: http://learn.javascript.ru/global-object

Глобальными называют переменные и функции, которые не находятся внутри какой-то функции.

В JavaScript все глобальные переменные и функции являются свойствами специального объекта, который называется «глобальный объект» (global object).

В браузере этот объект явно доступен под именем window. Присваивая или читая глобальную переменную, мы, фактически, работаем со свойствами window.

var a = 5; // объявление var создаёт свойство window.a

alert(window.a); // 5

Выполнение скрипта происходит в две фазы:

  1. На первой фазе происходит инициализация, подготовка к запуску. Во время инициализации скрипт сканируется на предмет объявления функций вида Function Declaration, а затем — на предмет объявления переменных var. Каждое такое объявление добавляется в window. Функции, объявленные как Function Declaration, создаются сразу работающими, а переменные — равными undefined.
  2. На второй фазе — собственно, выполнение. Присваивание (=) значений переменных происходит на второй фазе, когда поток выполнения доходит до соответствующей строчки кода.
// По окончании инициализации, до выполнения кода:
// window = { f: function, a: undefined, g: undefined }

var a = 5; // при инициализации даёт: window.a=undefined

function f(arg) { /*...*/ }  // при инициализации даёт: window.f = function

var g = function(arg) { /*...*/ }; // при инициализации даёт: window.g = undefined