---
# System prepended metadata

title: js-interview questions

---

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

