Здесь я попытаюсь объяснить важные концепции JavaScript, которые вы должны знать перед любым собеседованием.
- Значение или ссылка –в 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.
Счастливого обучения :)