因为你在说sequence[i] += ...
。
默认情况下sequence[i]
是undefined
.
var a;
a += "hello";
console.log(a); // "undefinedhello"
var b = "";
b += "hello";
console.log(b); // "hello"
你可以解决这个问题:
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
(function rand(alpha){
var sequence = [];
for(var i = 0; i < 10; i++){(function(i){
sequence[i] = "";
for(var j = 0; j < 3; j++){(function(j){
sequence[i] += alpha[Math.floor(Math.random()*10)+1];
})(j)}
})(i)}
return sequence;
})(arr);
顺便提一句。您不需要所有的闭包,因为您的脚本正在运行同步:
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
(function rand(alpha) {
var sequence = [];
for(var i = 0; i < 10; i++){
sequence[i] = "";
for(var j = 0; j < 3; j++){
sequence[i] += alpha[Math.floor(Math.random()*10)+1];
}
}
return sequence;
})(arr);
或者我想我更愿意做一个命名函数:
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
var a = sequence(arr);
function sequence(alpha) {
var sequence = [];
for(var i = 0; i < 10; i++){
sequence[i] = "";
for(var j = 0; j < 3; j++){
sequence[i] += alpha[Math.floor(Math.random()*10)+1];
}
}
return sequence;
};