Функция разворачивает строку: идёт от последнего индекса к нулю и добавляет символы в result. Тело цикла пустое, потому что вся работа выполняется в третьем выражении for.
Разбор и альтернативная реализация функции
Функция разворачивает строку: идёт от последнего индекса к нулю и добавляет символы в result. Тело цикла пустое, потому что вся работа выполняется в третьем выражении for.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Выясните, какое действие выполняет функция wtf, и предложите её иной вариант реализации.
function wtf(str) {
for (var idx = str.length - 1, result = ''; idx >= 0; result += str[idx--]) {
}
return result;
}
Ответ
Функция разворачивает строку: идёт от последнего индекса к нулю и добавляет символы в result. Тело цикла пустое, потому что вся работа выполняется в третьем выражении for.
Эквивалентный по UTF-16-поведению короткий вариант:
function reverse(text) {
return text.split('').reverse().join('');
}
Исходный str[idx] и split('') работают по кодовым единицам и могут разорвать суррогатную пару эмодзи. Вариант [...text].reverse().join('') сохраняет кодовые точки, но всё ещё не объединяет составные графемы. Пустая строка возвращается пустой; понятное имя reverse лучше скрывающего смысл wtf.