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