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