1.1 KiB
1.1 KiB
Ответ: 5
.
//+ run untrusted
var a = 5;
function a() { }
alert(a);
Чтобы понять, почему -- разберём внимательно как работает этот код.
- До начала выполнения создаётся переменная `a` и функция `a`. Стандарт написан так, что функция создаётся первой и переменная ее не перезаписывает. То есть, функция имеет приоритет. Но в данном случае это совершенно неважно, потому что...
- ...После инициализации, когда код начинает выполняться -- срабатывает присваивание `a = 5`, перезаписывая `a`, и уже не важно, что там лежало.
- Объявление `Function Declaration` на стадии выполнения игнорируется (уже обработано).
- В результате `alert(a)` выводит 5.