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

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

Подъем

1. Что такое подъем? — Теоретическая и базовая

поведение javascript по умолчанию при перемещении всех объявлений вверх текущей области.

2. Как избежать подъема?

"use strict", чтобы избежать подъемаили используйте "let" и "const", чтобы избежать подъема

3. Чтобы узнать, как вы понимаете подъем глобальных переменных, приведенный ниже код будет задан и запрошен для вывода? Базовый

console.log(hoist) // undefined 
var hoist = “Welcome hoisting”

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

var hoist;
console.log(hoist); // Output: undefined
hoist = "Welcome hoisting";

4. Теперь используйте приведенный выше код с let

console.log(hoist); // Output: ReferenceError: hoist is not defined 
let hoist = 'The variable has been hoisted.';

Ключевое слово «let» выдает ошибку, а не неопределенную. Это гарантирует, что мы всегда сначала объявляем наши переменные.

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

a();
var b = 5;
function a() {
  console.log(b); // undefined 
}

Да, он не поднимает назначение, он поднимает только объявление. Этот код эквивалентен следующему:

var b; // undefined
function a(){
 console.log(b);
}
a();
b = 5;

Само собой разумеется, что если b объявлено выше вызывающей функции, журнал будет 5

var b = 5;
a()
function a(){
 console.log(b); // 5 is output 
} 

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

var a = 5 ;
abc();
function abc(){
  console.log(a); // undefined 
  var a = 8 ; // if let used Refrence error will be thrown 
}
console.log(a); // 5 

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

Вопросы по var, let,const:

  1. В чем разница между varи let?

Повторное объявление переменной let с let or var в той же области видимости или в том же блоке не допускается:

Переменные, определенные с помощью var, поднимаются наверх, пусть не поднимаются

2. Разница между const и let ?

нельзя переназначить постоянный объект, но вы можете сделать

const a = 5;
a = 6 ; // Assignment to constant variable.
let a = 7; // Identifier ‘g’ has already been declared
var a = 8; // Identifier ‘g’ has already been declared
const b: // “SyntaxError: Missing initializer in const declaration

3. Изменение свойства в константном объекте

const a= [1,2];
a.push(3);
console.log(a); // [1,2,3] 
a=[4,5,6]; // Identifier 'a' has already been declared

Свойства объекта можно изменить, но нельзя объявить снова

Копирование вопросов, поверхностное копирование, глубокое копирование

1.Вывод следующего кода?

var a ={name:’aaaa’};
var b = a;
b.name= “bbbb”;
console.log(a); // {name:”bbbb”}

2. Как преодолеть вышеуказанную проблему?

То, что мы сделали ниже, является поверхностным копированием, это повторит ту же проблему при обработке вложенного объекта. При работе с вложенным объектом используйте глубокую копию;

var a= {name:”aaaa”};
var b =Object.assign({},a); 
b.name = “bbbb”;
console.log(a) // {name:”aaaa”}

Вопросы о цикле событий и асинхронности

  1. Что выведет следующий код
setTimeout(() => {
 console.log(“a”);
},0);
console.log(“b”);
console.log(“c”);
Output 
b
c
a

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

Разница между примитивными и ссылочными типами

Примитивы копируются по их значению, объекты копируются по их ссылке

let x =10;
let y=x;
x=100;
console.log(x); // 100
console.log(y); // 10 
let a = {number:555};
let b = a;
a = {number:666};
console.log(a) // {number:666}
console.log(b) //{number:666}
b={number:777}
console.log(a) // {number:777}
console.log(b) //{number:777}

Так . String, Number, Boolean, undefined, null, Symbol являются типами значений или примитивами. Объект, функции, массивы являются объектами или ссылочными типами.

let obj = {value:10};
function increment(obj){
   obj.value++;
}
console.log("Object value",obj.value); // 11 
let number = 10;
function increment(number){
   number++;
}
console.log("number",number); // 10 
function increment1(num){
  num++;
}
function main(){
  let num = 10;
  increment1(num);
  console.log(num); // 10
}
main();
function increment2(num){
  num.value++;
}
function main2(){
  let num = {value:10};
  increment(num);
  console.log(num.value); // 11
}

Выше приведены некоторые из распространенных вопросов по javascript, которые задают в первом или втором туре собеседований. Спасибо за внимание :).