Здесь я попытаюсь объяснить важные концепции JavaScript, которые вы должны знать перед любым собеседованием.

  1. Значение или ссылка –в JS переменным всегда присваивается значение.

В случае пяти примитивных типов (т. е. undefined, null, Boolean, String и Number) присваивается фактическое значение. Но для Function,Array или Object назначается ссылка на объект в памяти.

let greet1= 'Hello!';
let greet2= greet1;
greet2 = 'Hello World!';
console.log(greet1); //'Hello!'
console.log(greet2); //'Hello World!'

В приведенном выше случае, поскольку значение было скопировано в greet2, изменение greet2 не повлияло на greet1.

let greet1 = {msg: 'Hello'}
let greet2 = greet1;
greet2.msg = 'Hello World!'
console.log(greet1); //'Hello World!'
console.log(greet2); //'Hello World!'

В приведенном выше случае, поскольку ссылка на объект была скопирована в greet2, изменение greet2 также повлияло на greet1.

2. Область применения —

Он определяет видимость (доступность) переменных.

Он определяется двумя способами -

  • Локальная область [Область блока + Функциональная область]
  • Глобальный охват
function greetings(){
  var greet = 'Hello World'
  console.log(greet); //'Hello World!'
}
console.log(greet); // Reference-Error greet not defined

Приведенный выше код является примером локальной области видимости, где переменная доступна только в пределах области действия функции и выдает Reference-Error за ее пределами.

var greet = 'Hello World'
function greetings(){
  console.log(greet); //'Hello World!'
}
console.log(greet); // 'Hello World!'

Приведенный выше код является примером глобальной области видимости, где переменная доступна как внутри, так и вне функции.

3. Замыкания — Проще говоря,

Замыкание – это комбинация функции и ее лексической области видимости.

// greet function returning an anonymous function
function greet(greetMsg) {
  return function(name) {
    console.log(greetMsg + ', ' + name); //using "greetMsg" here
  }
}
const sayHello = greet('Hello');
sayHello('World!');// Hello, World!

В приведенном выше примере функция greet возвращает анонимную функцию, которая имеет доступ к givegreetMsg(т.е. Hello) для будущего использования этой анонимной функции.

4. Подъем — в Javascript,

Поднятие — это механизм JavaScript, в котором объявления переменных и функций перемещаются в верхнюю часть своей области перед выполнением кода.

Это означает, что независимо от того, где объявлены функции и переменные, они перемещаются в начало своей области действия независимо от того, является ли их область действия глобальной или локальной.

console.log(greet); // undefined

const greet = 'Hello World!!';

Поскольку JavaScript поднимает только объявления, а не инициализацию, в приведенном выше примере мы получаем специальное значение undefined в качестве вывода, а не ошибку Uncaught ReferenceError

5. Карри —

Это метод преобразования функции с несколькими аргументами в последовательность функций с одним аргументом.

const greet1 = 'Hello';
const greet2 = "World!!
// a function taking two arguments
function greet(greet1, greet2) {
    return (greet1 + " " +greet2);
}

console.log(greet(greet1, greet2)); //calling function with arguments
// after currying
function curryGreet(greet1) {
    return function(greet2) {
        return (greet1 + " " +greet2);
    }
}
console.log(curryGreet((greet1)(greet2))); // calling curried function

В приведенном выше примере вывод обоих вызовов будет одинаковым, то есть Hello World!!, но мы преобразовали функцию с несколькими аргументами в последовательность функций с одним аргументом.

Другие вопросы для проверки-

  • Разница между неопределенным и не определенным — ссылка
  • Разница между var и let — ref
  • Другие ресурсы для проверки концепций JS — freecodecamp, MDN Docs

В случае, если я пропустил какую-либо важную концепцию, не стесняйтесь оставлять ее в комментариях, а если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь оставлять их в моем linkedIn dm.

Счастливого обучения :)