Что выведет код Middle Области видимости и замыкания обновлено
var и function с одним именем
Вопрос
Что выведет код? По строке на каждый вывод.
function test() {
console.log(typeof foo);
var foo = 'строка';
function foo() {}
console.log(typeof foo);
}
test();
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: function, string. При входе в функцию регистрируются оба объявления.
Что выведет
function
string
Разбор
При входе в функцию регистрируются оба объявления. Объявление функции поднимается вместе с телом и имеет приоритет над var без значения, поэтому первая строка видит функцию: function. Затем выполняется присваивание foo = 'строка', а строка с function foo() {} при выполнении ничего не делает. Вторая строка: string.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.