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