Это для людей, которые разбираются в 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:
- В чем разница между 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”}
Вопросы о цикле событий и асинхронности
- Что выведет следующий код
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, которые задают в первом или втором туре собеседований. Спасибо за внимание :).