Задачки на собеседовании

На замыкание

Классическая задача на замыкание, что выведется в консоль

for(var i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
        }, i*1000);
}

Ответ: моментально 10 раз выведется число 10.

Почему так:

Варианты решения:

for(let i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
        }, i*1000);
}
for(var i = 0; i < 10; i++) {
    let j = i;
    setTimeout(function(){
        console.log(j);
        }, j*1000);
}

на всплытие

Что выведется в консоль (при ES6 и без)

if (something) {
    function foo() {
        console.log(1);
        }
} else {
    function foo() {
        console.log(2);
        }
}

foo();

Ответ: 2, если ES6 то ReferenceError - повторное присвоение

results matching ""

    No results matching ""