не получается организовать рекурсию при замыкании
function createRandom() {
let arr = []
return function() {
console.log('func entry')
let newNum = Math.floor(Math.random() * (10 - 1 + 1) + 1)
console.log(`this is newNum = ${newNum}`)
if(arr.indexOf(newNum) == -1) {
arr.push(newNum)
console.log('new num has pushed')
console.log(arr)
} else {
console.log('else entry')
createRandom()
}
}
}
let body = document.querySelector('body')
let btn = document.createElement('button')
btn.innerHTML = 'click on me'
body.appendChild(btn)
btn.addEventListener('click', createRandom())
после нажатия на кнопку, при выполнении блока else{}, выполнение createRandom() игнорируется, почемуууу
Ответы (1 шт):
Автор решения: Pavel Grishaev
→ Ссылка
Попробуйте именовать функцию и вызывать её внутри, а не внешнюю создающую:
function createRandom() {
let arr = []
return function recursiveStep() {
console.log('func entry')
let newNum = Math.floor(Math.random() * (10 - 1 + 1) + 1)
console.log(`this is newNum = ${newNum}`)
if(arr.indexOf(newNum) == -1) {
arr.push(newNum)
console.log('new num has pushed')
console.log(arr)
} else {
console.log('else entry')
recursiveStep()
}
}
}