function scc(n){
for(var i = 0; i < n; i++){
var arr = [];
var num = parseInt(Math.random() * 123);
if(num >=0 && num <= 9){
arr.push(num);
}else if(num >= 97 && num <= 122 || num >= 65 && num <= 90){
arr.push(String.fromCharCode(num));
}else{
i--;
}
}
return arr.join("");
}
alert(scc(6));
为什么我把var arr = [];写在for循环里面就是错的?
我认为写在for循环里面也可以每次push一个数字或者字母上去啊?
谁能告诉我里面的完整逻辑思路是什么,不胜感激
function scc(n) {
var arr = [];
for (var i = 0; i < n; i++) {
//如果写里面每次都把arr又赋值为[]空数组了
var num = parseInt(Math.random() * 123);
if (num >= 0 && num <= 9) {
arr.push(num);
} else if (num >= 97 && num <= 122 || num >= 65 && num <= 90) {
arr.push(String.fromCharCode(num));
} else {
i--;
}
}
return arr.join("");
}
alert(scc(6));
你这个始终都只有一个吧,每次循环都新var了一个arr且赋值为[]
因为你在循环外边调用arr了(return arr.join("");),你声明在循环里面属于内部变量,只生效于for循环里。你在循环外使用的话就得声明在循环外边