I'm learning JavaScript and have this very simple app that returns a random item from an array, but only if it's different to the previous item returned. My code is below. It works fine generally, but randomly returns undefined sometimes even when the console.log
on the previous line returns a valid item. If I have the return outside of the If statement it never returns undefined.
Why does my function only sometimes return undefined when inside the If statement and work fine outside?
let ranArray = [
"flaky","pickle","grass","juicy","desert","wonderful","even","signal","frail","team","addition"
];
let previousRanNum = 12;
function generateNumber (){
return Math.floor(Math.random()*11);
};
function getItem(){
let ranNum = generateNumber();
if (ranNum !== previousRanNum) {
previousRanNum = ranNum;
console.log(ranNum);
console.log(ranArray[ranNum]);
return ranArray[ranNum];
} else {
getItem();
}
};
debug console:
getItem()
undefined
10
addition
The following works fine and never return undefined:
function getItem(){
let ranNum = generateNumber();
if (ranNum !== previousRanNum) {
previousRanNum = ranNum;
console.log(ranNum);
console.log(ranArray[ranNum]);
} else {
getItem();
}
return ranArray[ranNum];
};