This commit is contained in:
Ilya Kantor 2014-10-26 22:10:13 +03:00
parent 06f61d8ce8
commit f301cb744d
2271 changed files with 103162 additions and 0 deletions

View file

@ -0,0 +1,19 @@
Ответ: `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>

View file

@ -0,0 +1,15 @@
# Функция и переменная
[importance 3]
Каков будет результат кода? Почему?
```js
var a = 5;
function a() { }
alert(a);
```
P.S. Это задание -- учебное, на понимание процесса инициализации и выполнения. В реальной жизни мы, конечно же, не будем называть переменную и функцию одинаково.