Задачки на собеседовании
На замыкание
Классическая задача на замыкание, что выведется в консоль
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 - повторное присвоение