# 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 создает новый массив с результатом вызова указанной функции для каждого элемента массива.