Найти тему
Роман Репин

Задачи на понимание основ JS (с реальных собеседований)

Решаю ДЗ по курсу:

[Udemy] [Иван Петриченко] Полный курс по JavaScript.

Основы JavaScript.

Вопросы к этому заданию
1) Какое будет выведено значение: let x = 5; alert( x++ ); ?

Ответ:
5, так как используется посфиксное значение (++ стоит после переменной X), то сначала передается старое значение, а после этого только добавляет +1 от старого значения, в отличии от префиксного значения, если бы "++" стояли бы перед переменной.


2) Чему равно такое выражение: [ ] + false - null + true ?

Ответ:
NaN, так как выражение бессмысленное, массив [ ] прибавить булевое значение превратится в строку, так как пустой массив конвертируется в строку и булевое значение превратится в строку, дальше по сути отнимать или прибавлять от строки или или другим булевым значением бессмысленно и результат будет NaN



3) Что выведет этот код: let y = 1; let x = y = 2; alert(x); ?

Ответ:
2, так как первое значение y=1, после создаем x присваиваем ему сначала значением 1, а затем присваиваем новое значение 2



4) Чему равна сумма [ ] + 1 + 2?

Ответ:
12, так как пустой массив при сложении превращается в строку и в результате мы получаем тип данных string = 12, уже не производится математическая операция, а соединение текста цифры 1 и цифры 2.


5) Что выведет этот код: alert( "1"[0] )?

Ответ:
1, так как значение 1 нам известно, а нулевой индекс какого-то массива не опознанного нам неизвестно, потому его и не отобразил браузер



6) Чему равно 2 && 1 && null && 0 && undefined ?

Ответ:
null, разберем по порядку:
2 && 1 = 1 // если первый операнд истинный, то возвращается второй
1 && null = null // Если сравнивать с null, то всегда будет null, дальше сравнение не имеет смысла, ответ null



7) Есть ли разница между выражениями? !!( a && b ) и (a && b)?

Ответ:
Да, есть, при использовании && результат может быть разным, а если стоит перед выражением два восклицательных знака, то результат всегда будет булевое значение (true или false).



8) Что выведет этот код: alert( null || 2 && 3 || 4 ); ?

Ответ:
3, разберем по этапу:
null || 2 // сравнение ИЛИ выбирает первое истинное значение, следовательно это "2"
2 && 3 // 2 И 3 выбирает второе значение, если первый операнд истинный, возвращает второе значение = "3"
3 || 4 // Как и в первом случае, принимает первое истинное значение = "3"



9) a = [1, 2, 3]; b = [1, 2, 3]; Правда ли что a == b ?

Ответ:
false, так как при сравнении объекта истинно лишь в том случае, если оба операнда ссылаются на один и тот же объект в памяти



10) Что выведет этот код: alert( +"Infinity" ); ?

Ответ:
Infinity, так как находится в кавычках, что делает значение строковым, а плюс игнорируется, так как прибавлять нечего.



11) Верно ли сравнение: "ёжик" > "яблоко"?

Ответ:
true
Потому что сравниваются коды первых символов строк таблицы юникода .В ней “ё” = 1105, а “я” = 1103.



12) Чему равно 0 || "" || 2 || undefined || true || falsе ?

Ответ:
2, сравним по этапу.
0 || "" // при сравнении со строкой, всегда будет строка
"" || 2 // При сравнении с И, выбирается первое истинное значение и это "2"
Так как дальше идут все явно не истинные значение, то остается верным значением 2