Объясните как работает следующий код (JS)
function random(){
var already_used = [];
return function() {
var new_num = Math.floor(Math.random() * 100 + 1);
**for (var i = 0; i < already_used.length; i++) {
if (already_used[i] == new_num) *{return}*
};**
parag.innerHTML += new_num+', ';
already_used.push(new_num);
}
}
Ответы (1 шт):
random()— это функция, которая возвращает другую функцию, генерирующую случайное число. Также она содержит в себе массивalready_used, в котором хранятся результаты предыдущих генераций для предотвращения повторений. Данная техника иллюстрирует использование замыканий.Результат вызова
random()можно сохранить в переменную и вызывать как функцию. Ниже приведён пример использования такой возвращённой функции при помощи переменнойaddRandom: она привязана к щелчку кнопки как обработчик события.Каждый вызов
addRandom()геренирует случайное число. Затем в цикле перебираются все прежние случайные числа, сохранённые в массиве. Если совпадение найдено, функция просто завершает работу. Это завершение и производится при помощи{return}— оно ничего не возвращает, просто обрывает выполнение функции. В этом случае нажатие на кнопку не производит никакого действия.Если совпадения нет, функция добавляет текущее случайное число в некий HTML элемент через запятую, а потом заносит число в массив для будущих проверок.
function random(){
var already_used = [];
return function() {
var new_num = Math.floor(Math.random() * 100 + 1);
for (var i = 0; i < already_used.length; i++) {
if (already_used[i] == new_num) {return}
};
parag.innerHTML += new_num+', ';
already_used.push(new_num);
}
}
const addRandom = random();
mybutton.addEventListener('click', addRandom);
<button id='mybutton'>Add random</button>
<div id='parag'></div>