Далее на странице...
Здесь будут рассмотрены задачи JavaScript, задаваемые на реальных собеседованиях.
Желательно самостоятельно решить задачи на понимание основ языка JavaScript.
Ниже представлены условия задач. И далее их решения.
1) Какое будет выведено значение: let x = 5; console.log(x++); ?
2) Чему равно такое выражение: [ ] + false - null + true ?
3) Что выведет этот код: let y = 1; let x = y = 2; alert(x); ?
4) Чему равна сумма [ ] + 1 + 2?
5) Что выведет этот код: alert( "1"[0] )?
6) Чему равно 2 && 1 && null && 0 && undefined ?
7) Есть ли разница между выражениями? !!( a && b ) и (a && b)?
8) Что выведет этот код: alert( null || 2 && 3 || 4 ); ?
9) a = [1, 2, 3]; b = [1, 2, 3]; Правда ли что a == b ?
10) Что выведет этот код: alert( +"Infinity" ); ?
11) Верно ли сравнение: "Ёжик" > "яблоко"?
12) Чему равно 0 || "" || 2 || undefined || true || falsе ?
1-я задача - Постфикс и Префикс
1) Какое будет выведено значение: let x = 5; console.log(x++); ?
let x = 5;
console.log(x++);
Результат
5
Ответ 5. Потому что постфиксная форма записи сначала возвращает старое значение. Об этом шла речь здесь.
Если снова вывести переменную в консоль, то мы увидим уже новое значение.
let x = 5;
console.log(x++);
console.log(x);
Результат
5
6
Или нужно было сделать так...
let x = 5;
x++;
console.log(x);
Результат
6
Или воспользоваться префиксной формой записи.
let x = 5;
console.log(++x);
Результат
6
Сложение различных типов данных
Задача №2 - Сложение различных типов данных в JavaScript
Чему равно такое выражение: [ ] + false - null + true ?
Чтобы правильно решить эту задачу требуется анализ. Поэтому это задание следует выполнить поэтапно.
Математические операции: сложение и вычитание - выполняются последовательно друг за другом. О порядке выполнения операторов читайте здесь.
1-ый этап. Что дает сложение пустого массива с булевым значением [ ] + false ?
console.log([ ] + false); // 'false'
console.log(typeof([ ] + false));
Результат
string
Результат false и это строка. Почему?
Следует запомнить, что в подобных выражениях пустой массив [ ] конвертируется в строку "". Это уже не тип данных object, а тип данных string.
Таким образом в данном контексте запись [ ] + false (сложение массива и false) идентична записи "" + false (сложение строки и false) .
Из прошлой статьи известно, что сложение чего-либо со строкой дает строку.
Тут стоит обратить внимание и на цвет false в консоли - он белый (при темной теме браузера) или черный (при светлой теме): это говорит о строковом типе данных. В то время как булевы значения true или false в консоли имеют фиолетовый цвет.
Итак, сложение пустого массива с булевым значением дает в результате строку.
2-ой этап. Из строки нужно отнять (вычесть) null. Каков результат?
console.log([ ] + false); // 'false'
console.log([ ] + false - null);
Результат
NaN
Вычитание из строки другого типа данных - это бессмысленная математическая операция. Поэтому в результате мы увидим NaN - не число.
3-ий этап. Что дает сложение NaN с булевым значением?
console.log([ ] + false); // 'false'
console.log([ ] + false - null); // NaN
console.log([ ] + false - null + true);
Результат
NaN
NaN
Сложение не числа NaN с булевым значением дает в результате NaN.
Итог. Чему равно такое выражение: [ ] + false - null + true ? Ответ NaN.
При решении этой задачи нужно понимать, как работает динамическая типизация.
И самое главное - запомнить особенность с пустым массивом (см. 1-ый этап).