Всем привет! Начал изучать JS по книге JS для детей. По ходу изучения попалась вот такая задача:
ЗадачаГенератор случайных строк
Напишите генератор случайных строк. Для этого вам понадо-
бится строка со всеми буквами алфавита:
var alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
Чтобы выбирать из этой строки случайную букву, можно
использовать примерно такой же код, как для генератора случай-
ных дразнилок из третьей главы: Math.fl oor(Math.random() *
alphabet.length). Так вы получите случайный индекс в строке.
Затем, воспользовавшись квадратными скобками, можно полу-
чить символ по этому индексу.
Начните создавать случайную строку с пустой строки
(var randomString = ""). Затем добавьте цикл while и при
каждом его повторе добавляйте в строку новый случайный
символ — до тех пор, пока длина строки randomString не пре-
высит шесть символов (или любой другой длины на ваш выбор).
Вот как я решил ее:
Решение
let alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
let randomString = "";
while (randomString.length < 10) {
randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}
console.log(randomString);
Но, по ходу решения возник вопрос: что если завести отдельную функцию типа randomIndex и в ней высчитывать случайное число, которое потом можно будет указать в теле цикла?
Другой вариантlet alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
let randomIndex = Math.floor(Math.random() * alphabet.length);
let randomString = "";
while (randomString.length < 10) {
randomString += alphabet[randomIndex];
}
console.log(randomString);
В таком случае результат всегда выдает одно число в индексе и соответственно в консоль выдает всего одну букву, например "тттттт".
Хотел узнать, почему это так работает? Почему при указании вычисления рандомного значения в теле функции она отрабатывает нормально, а если указать в качестве отдельной функции, то цикл проходит с одним одинаковым числом. Скажу сразу, что я абсолютный новичок в JS (это первый язык, который я начал изучать). Спасибо.