Примеры вопросов по JavaScript, которые могут задать на собеседовании на позицию Junior.
1) Что такое оператор typeof?
Это оператор, проверяющий значение и тип переменной.
var a;
typeof a; // "undefined"
a = "hello world";
typeof a; // "string"
a = 42;
typeof a; // "number"
a = true;
typeof a; // "boolean"
a = null;
typeof a; // "object" -- weird, bug
a = undefined;
typeof a; // "undefined"
a = { b: "c" };
typeof a; // "object"
2) Как узнать значение свойства объекта?
var obj = {
a: "hello world", // property
b: 42,
c: true
};
obj.a; // "hello world", accessed with doted notation
obj.b; // 42
obj.c; // true
obj["a"]; // "hello world", accessed with bracket notation
obj["b"]; // 42
obj["c"]; // true
Используйте квадратные скобки, если хотите точно получить свойство объекта.
var obj = {
a: "hello world",
b: 42
};
var b = "a";
obj[b]; // "hello world"
obj["b"]; // 42
Массив - это объект, который содержит значения (любого типа) не в именованных свойствах / ключах, а в позициях с нумерацией.
var arr = [
"hello world",
42,
true
];
arr[0]; // "hello world"
arr[1]; // 42
arr[2]; // true
arr.length; // 3
typeof arr; // "object"
4) Что такое принуждение в JS?
Это преобразование между двумя различными типами. Бывает явным и неявным.
Пример явного принуждения:
var a = "42";
var b = Number( a );
a; // "42"
b; // 42 -- число
Пример неявного принуждения:
var a = "42";
var b = a * 1; // "42"
a; // "42"
b; // 42 -- число
5) Объясните равенство в JavaScript
Равенство — это сравнение на соответствие данных. Бывает строгое (учитывается тип данных) и абстрактное (тип не учитывается).
var a = "42";
var b = 42;
a == b; // true
a === b; // false
6) Что такое область видимости?
Область видимости переменной — это часть контекста выполнения, в котором эта переменная существует. Область видимости определяет, есть ли у вас доступ к переменной в данном контексте выполнения. Каждая функция получает свою область видимости. Область действия - это в основном набор переменных, а также правила доступа к этим переменным по имени. Только код внутри этой функции может получить доступ к переменным области действия этой функции. Имя переменной должно быть уникальным в той же области видимости. Область может быть вложена в другую область. Если одна область вложена в другую, код внутри самой внутренней области может получить доступ к переменным из любой области.