Javascript задача для новичка?

Всем привет! Начал изучать 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 (это первый язык, который я начал изучать). Спасибо.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
randomIndex - это переменная, а не функция.
Поэтому постоянно одно и то же значение.
Ответ написан
Комментировать
wapster92
@wapster92 Куратор тега JavaScript
: что если завести отдельную функцию
и где там у тебя функция? Ты присвоил переменной значение и его постоянно используешь.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
let randomIndex = Math.floor(Math.random() * alphabet.length);
Так по-прежнему в переменную randomIndex записывается случайный индекс. Один раз.

const getRandomIndex = () => Math.floor(Math.random() * alphabet.length);
А вот функция, которая при каждом вызове getRandomIndex() будет возвращать новый случайный индекс.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы