en.javascript.info/01-js/05-functions-closures/01-global-object/04-function-and-variable/solution.md
Ilya Kantor f301cb744d init
2014-10-26 22:10:13 +03:00

1.1 KiB
Raw Blame History

Ответ: 5.

//+ run untrusted
var a = 5; 
 
function a() { }

alert(a);

Чтобы понять, почему -- разберём внимательно как работает этот код.

  1. До начала выполнения создаётся переменная `a` и функция `a`. Стандарт написан так, что функция создаётся первой и переменная ее не перезаписывает. То есть, функция имеет приоритет. Но в данном случае это совершенно неважно, потому что...
  2. ...После инициализации, когда код начинает выполняться -- срабатывает присваивание `a = 5`, перезаписывая `a`, и уже не важно, что там лежало.
  3. Объявление `Function Declaration` на стадии выполнения игнорируется (уже обработано).
  4. В результате `alert(a)` выводит 5.