# js-interview questions #### В чем разница между операторами `==` и `===`? #### В чем разница между ключевыми словами `var`, `let` и `const`? #### Что такое область видимости (Scope)? #### Что значит такая запись ```js let { firstName, lastName, position, yearHired } = employee ``` #### Что такое объект Set? #### Что такое прототип объекта? #### Что такое классы - ключевое слово class? #### Задача 1 Напишите функцию sum, которая работает таким образом: `sum(a)(b) = a+b`. Да, именно таким образом, используя двойные круглые скобки (не опечатка). Например: ```js console.log( sum(1)(2) ); // 3 console.log( sum(5)(-1) ); // 4 ``` #### Задача 2 Следующий код создаёт массив из стрелков `shooters`. Каждая функция предназначена выводить их порядковые номера. Но что-то пошло не так… ```js function makeArmy() { let shooters = []; let i = 0; while (i < 10) { let shooter = function() { // функция shooter console.log( i ); // должна выводить порядковый номер }; shooters.push(shooter); i++; } return shooters; } let army = makeArmy(); army[0](); // у 0-го стрелка будет номер 10 army[5](); // и у 5-го стрелка тоже будет номер 10 // ... у всех стрелков будет номер 10, вместо 0, 1, 2, 3... ``` Почему у всех стрелков одинаковые номера? Почините код, чтобы он работал как задумано. #### Что такое замыкание (Closures)? #### Задача 3 Что выведет следующая программа? ```js let animal = { eat() { this.full = true; } }; let rabbit = { __proto__: animal }; rabbit.eat(); console.log(animal.full); // ? console.log(rabbit.full); // ?? ``` #### Как бы Вы реализовали метод `Array.prototype.map`? Метод map создает новый массив с результатом вызова указанной функции для каждого элемента массива.