转化一个数字数组为function数组(每个function都弹出相应的数字)行不通了??

码农世界
  • 731
 转化一个数字数组为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)}???这个闭包没问题吧?

回复
阅读 1.8k
1 个回答
    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();
        document.write(arr);
    }
    transforme([1,2,3,4]);

关于问题二

既然你的目的是要把那个数字硬编码进去的话,就只能直接去构造一段文本了。

就你的代码而言,本身是没问题的。你试试看执行arr[0]()arr[1]()这类的,就结果而言我想应该能满足你的业务需要吧。

你知道吗?

宣传栏