转化一个数字数组为function数组(每个function都弹出相应的数字)
function transforme(arr)
{ var arr_string=arr.join('');
new_string=arr_string.replace(/\d/g,function($i){return function(){alert($i)}})
arr=new_string.split();
for(var i=0;i<arr.length;i++)
arr[i]();
}
transforme([1,2,3,4]);//显示的是四个function(){alert($i)}
应该显示1,2,3,4才对啊??怎么整
第二个问题:
var arr = [1, 2, 3, 4];
var len = arr.length;
for(var i = 0; i < len; i++) {
var num = arr[i];
(function(num) { arr[i] = function() { alert(num); }})(num);
}
document.write(arr);
为什么会显示四个function() { alert(num)}???这个闭包没问题吧?
关于问题二
既然你的目的是要把那个数字硬编码进去的话,就只能直接去构造一段文本了。
就你的代码而言,本身是没问题的。你试试看执行
arr[0]()
、arr[1]()
这类的,就结果而言我想应该能满足你的业务需要吧。