Q1.
Выход
welcome
hello
Объяснение
var
является областью действия функции, поэтому, когда msg
объявляется внутри блока if
, он переопределяет msg
в глобальной области. Этого не происходит с let
, поскольку он имеет блочную область видимости.
Q2.
Выход
5
5
5
5
5
Объяснение
Поскольку var
является областью видимости функции, переменная i
сохраняет значение 5
после завершения цикла. Функция обратного вызова в setTimeout
получает одно и то же значение для каждого случая.
Решение
- Преобразуйте
var
вlet
, чтобы создать область действия для каждой итерации.
- Оберните
setTimeout
анонимной функцией. Передачаi
в качестве параметра ограничивает его область действия анонимной функции, и поэтому значение не теряется.
Q3.
Выход
{ foo_1: 'Hello' }
Q4.
Выход
1,2,34,5,6
Объяснение
String([1,2,3]);
is "1,2,3"
Следовательно, "1,2,3" + "4,5,6"
это "1,2,34,5,6"
Q5. Какой порядок исполнения?
Выход
1
4
3
2
Объяснение
Приоритет для цикла событий: стек вызовов ›микрозадача› макрозадача
Сначала выполняется весь синхронный код
Следовательно, логи 1
, 4
Далее идут Promise
и setTimeout
Обратный вызов обещания хранится в microtask queue
, а обратный вызов setTimeout хранится в macrotask queue
microtask
имеет более высокий приоритет по сравнению с macrotask
. Таким образом, он регистрирует 3
, за которым следует 2
Q6.
Выход
string
Объяснение
Оценивайте справа налево
typeof 1
номер возвратаtypeof 'number'
возвращает строку
Q7.
Решение
true
Объяснение
Значение по умолчанию для Math.max()
- -Infinity
, значение по умолчанию для Math.min()
- Infinity
.
Следовательно, -Infinity < Infinity
это true
Q8.
Выход
function
Объяснение
За счет одного раунда синтаксического анализа (подъема) код выглядит так
Из-за этого последнее доступное значение для foo - function
Q9.
Выход
false
Объяснение
Он начинается слева направо, поэтому 3 > 2
равно true
true > 1
эквивалентно 1 > 1
, то есть false
Q10.
Выход
global obj
Объяснение
При выполнении fn()
значение this
равно window
, а window.str
- global
.
.call()
присваивает this
obj
, а obj.str
равно obj
Примечание. Это решение работает в non-strict
режиме.
Спасибо за чтение 💙
Подпишитесь на @ codedrops.tech, чтобы узнать больше.
Instagram ● Twitter ● Facebook ● Linkedin