Когда страница загружается, сценарий в разделе заголовка инициализирует две глобальные переменные (aBoy и hisDog) и создает в памяти функцию demo(). В теле документа другой фрагмент сценария вызывает эту функцию. Внутри функции инициализируется две локальные переменные, одна из которых (hisDog) имеет значение, совпадающее с названием глобальной переменной. В JavaScript такое двойное описание переменной приводит к тому, что везде в пределах данной функции приоритетным для всех операторов функции будет описание локальной переменной. Однако следует обратить внимание на тот факт, что если убрать ключевое слово Var из локальной инициализации, то в результате глобальной версии этой переменной будет присвоено новое значение «РЭССи».
Другая локальная переменная output предназначена скорее для сохранения текста, чем для отображения его на экране. Аккумуляция текста переменной начинается с того момента, когда вычисляется значение локальной переменной hisDog. Затем проводится объединение текстовых фраз (обратить внимание на дополнительные пробелы в конце сток). Затем определяется значение глобальной переменной aBoy. Ни одна глобальная переменная не может быть вытеснена локальной переменной, доступной в данной функции. После этого определяется выражение HTML, которое нужно отобразить на странице так, чтобы оно заканчивалось пробелом и дескриптором <br>. В последнем операторе функции содержимое выводится на странице.
После того как стоящая перед функцией задача выполнена, следующий оператор тела документа выводит на страницу еще одну строку.
Поскольку этот оператор сценария реализуется в глобальной области действия (т.е. находится вне функции), то в таком представлении ему будут доступны только глобальные переменные, включая и те, что определены внутри других дескрипторов <script> данного документа. К тому моменту, когда загрузка всей страницы полностью завершена, на странице будет отображаться следующий текст:
РЭССи does not belong to Павлик Морозов
Полиграф Полиграфович Шариков belongs to Павлик Морозов