去网上抄了一代码:
function randomString(len)
{
len = len || 32;
var $chars = 'abcdefghijklmnopqrstuvwxyz0123456789_';
var maxPos = $chars.length;
var pwd = '';
for (i = 0; i < len; i++)
{
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
}
在调用的时候(例):
var arr = [0,1,2,3,4,5,6,7,8,9];
for (var i=0; i<arr.length; ++i)
{
console.log(randomString(5));
}
发现
console.log(randomString(5));
竟然无限地执行下去了!!
找啊找,在
randomString
函数中找到:
for (i = 0; i < len; i++)
这里有一个i,竟然没有声明是变量,这时候它竟然就是我调用时候的那个i,导致每次执行
randomString
后我的i都变为5了!!
一切都是代码编写者编写代码时不规范造成的坑!
把抄来的函数改成:
function randomString(len)
{
len = len || 32;
var $chars = 'abcdefghijklmnopqrstuvwxyz0123456789_';
var maxPos = $chars.length;
var pwd = '';
for (var i = 0; i < len; i++)
{
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
}
就可以了。