en.javascript.info/1-js/5-functions-closures/1-global-object/4-function-and-variable/solution.md
Ilya Kantor 87bf53d076 update
2014-11-16 01:40:20 +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.