Alert покажет строку nullab1e примерно после завершения секундного таймера: null не включает значение параметра по умолчанию.
async function f(result = 1) {
Alert покажет строку nullab1e примерно после завершения секундного таймера: null не включает значение параметра по умолчанию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
async function f(result = 1) { let promiseB = new Promise(resolve => { setTimeout(() => resolve("1e"), 200) });
let promiseA = new Promise(resolve => {
setTimeout(() => resolve("ab"), 1000)
});
result += await promiseA;
result += await promiseB;
alert(result); // ?
}
f(null);
Ответ
Alert покажет строку nullab1e примерно после завершения секундного таймера: null не включает значение параметра по умолчанию.
Оба таймера запускаются до первого await. Сначала ожидается promiseA со строкой ab; операция null + 'ab' даёт 'nullab'. promiseB за это время уже выполнился со значением 1e, которое затем добавляется как строка. Значение по умолчанию 1 применяется только при undefined или отсутствии аргумента, а задержки таймеров не являются точным расписанием.