let PW = 26;
let pwArray = [0,1,2,3,4,5,6,7,8,9]
let submitEl = document.getElementById("submit");
let element = "";
for (let index = 0; index < pwArray.length; index++) {
const RandomNum = Math.floor(Math.random()*pwArray.length);
let pwSlice = pwArray.slice(RandomNum,RandomNum+1)
let PWc = pwSlice*RandomNum;
element += pwArray[PWc];
}
console.log(element);
為什麼會出現undefined?
問題出在最後兩段,
let pwSlice = pwArray.slice(RandomNum,RandomNum+1)
//下方
let PWc = pwSlice*RandomNum;
element += pwArray[PWc];
我不清楚你要是做什麼功能,所以不清楚要怎麼修改。
不過可以確定PWc
有可能會超出pwArray
的最大index
,
所以找不到數值,自然就是undefined
。
例如:
//RandomNum = 6
let pwSlice = [6]
let PWc = [6]*6 = 36
element += pwArray[36];//找不到,自然是undefined
題外話: pwSlice
是陣列,拿去乘上數字RandomNum
,很奇怪。
雖然因為pwSlice
裡只有一個數字,所以不會出錯,但如果有兩個以上就會出錯。
把倒數第四列改成如下element += '['+PWc+']'; //pwArray[PWc];
就可以知道程式會去存取超出 pwArray 個數的位置
導致 undefined