В этой статье я рассмотрю 10 каверзных вопросов на собеседовании по JavaScript.
1. Что такое Истина и Ложь?
В JavaScript истинное значение — это значение, которое считается true
при встрече в логическом контексте. Все значения истинны, если только они не определены как ложные (т. е. кроме false
, 0
, -0
, 0n
, ""
, null
, undefined
и NaN
).
Примеры истинных значений в JavaScript:
if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
с другой стороны, значение falsy (иногда пишется как falsey) — это значение, которое считается ложным при встрече в логическом контексте.
Примеры значений falsy в JavaScript:
if (false)
if (null)
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ("")
2. В чем разница между двойным равным (==) и тройным равным (===)?
Двойное равенство (==) и тройное равенство (===) используются для проверки равенства между двумя переменными. Двойное равенство (==) возвращает истину, когда значения двух переменных совпадают, тогда как тройное равенство (===) возвращает истину, когда значение и тип двух переменных равны.
3. В чем разница между связыванием, вызовом и применением?
Bind(): метод bind() возвращает новую функцию, позволяющую передавать массив и любое количество аргументов.
Call(). Метод call() вызывает функцию с заданным значением this и аргументами, предоставляемыми один за другим. Это означает, что мы можем вызывать любую функцию и явно указывать, на что this должно ссылаться внутри вызывающей функции.
Call(). Метод call() вызывает функцию с заданным значением this и аргументами, предоставляемыми один за другим. Это означает, что мы можем вызывать любую функцию и явно указывать, на что this должно ссылаться внутри вызывающей функции.
4. Что такое окно, глобальная переменная, глобальная область видимости?
Окно. Объект окна представляет собой открытое окно в браузере.
Если документ содержит фреймы (теги ‹iframe›), браузер создает один объект окна для документа HTML и один дополнительный объект окна для каждого фрейма.
Глобальная переменная: переменная, объявленная вне функции, становится ГЛОБАЛЬНОЙ.
Глобальная переменная имеет глобальную область действия.
Глобальная область действия. Глобальная область действия означает, что все скрипты и функции на веб-странице могут получить доступ к переменной.
5.Как понимать это ключевое слово в JavaScript?
В JavaScript ключевое слово this
относится к объекту, который в данный момент выполняет код. Краткая версия того, что оценивает this
, выглядит следующим образом:
- По умолчанию
this
относится к глобальному объекту. - В функции, когда она не находится в строгом режиме,
this
относится к глобальному объекту. - В функции в строгом режиме
this
равноundefined
. - В стрелочной функции
this
сохраняет значениеthis
окружающего лексического контекста. - В объектном методе
this
относится к объекту, для которого был вызван метод. - В вызове конструктора
this
привязывается к новому создаваемому объекту. - В обработчике событий
this
привязывается к элементу, на котором находится слушатель.
6. Что такое асинхронный Javascript setTimeout, setInterval?
setTimeout.Метод setTimeout() вызывает функцию или вычисляет выражение по прошествии указанного количества миллисекунд.
setTimeout(function(){ alert(“Hello”); }, 3000);
setInterval: метод setInterval() вызывает функцию или вычисляет выражение через указанные интервалы (в миллисекундах).
Метод setInterval() будет продолжать вызывать функцию до тех пор, пока не будет вызвана функция clearInterval() или окно не будет закрыто.
setInterval(function(){ alert("Hello"); }, 3000);
7. Найдите самый большой элемент массива.
решение:
var arr = [1,2,3];
var max = arr.reduce(function(a, b) {
return Math.max(a, b);
});
8. Удалить повторяющийся элемент из массива.
решение:
// Defining function to get unique values from an array function getUnique(array){ var uniqueArray = []; // Loop through array values for(i=0; i < array.length; i++){ if(uniqueArray.indexOf(array[i]) === -1) { uniqueArray.push(array[i]); } } return uniqueArray; } var names = [“John”, “Peter”, “Clark”, “Harry”, “John”, “Alice”]; var uniqueNames = getUnique(names); console.log(uniqueNames); // Prints: [“John”, “Peter”, “Clark”, “Harry”, “Alice”]
9. Подсчитайте количество слов в строке.
решение:
function countWords(str) { str = str.replace(/(^\s*)|(\s*$)/gi,""); str = str.replace(/[ ]{2,}/gi," "); str = str.replace(/\n /,"\n"); return str.split(' ').length; } countWords("I love JavaScript") // 3
10. Перевернуть строку
решение:
function reverseString(str) {
return str.split("").reverse().join("");
}
reverseString("hello"); // olleh