是否可以在创建函数时创建for循环?

时间:2017-04-25 03:12:18

标签: javascript loops

是否可以在创建函数(等)时创建for循环?只是为了减少硬编码,因为我在数组中有很多值。我在这里有我的代码而且它没有用。



var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"];

for (var i = 0; i < obj.length; i++) {
  function obj[i] ()
  { 
  var data = {};
            $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
				  	url: '/legone/survey/'+obj[i]+'',						
                    success: function(data) {   
                        }
                    });
	alert("Sucessful backup on "+obj[i]+");
  }
}
&#13;
&#13;
&#13;

从上面的代码中,我只想在obj [i]中插入数组的值谢谢

2 个答案:

答案 0 :(得分:1)

我不确定你要在这里实现什么,但是如果你想创建一个后来调用的函数列表,这段代码可能会帮助你开始:

var obj=["backupF31","backupF32","backupF33","backupF34","backupF35"];

var functions = obj.map(function(key) {
  return function(data) {
    $.ajax({
      type: 'POST',
      data: JSON.stringify(data),
      contentType: 'application/json',
      url: '/legone/survey/'+key+'',
      success: function(response) {
        data[key] = response
      }
    });
    alert("Sucessful backup on "+obj[i]+");
  }
}

var data = {};
functions.forEach(function(f) {
  f(data);
});

如果这不是您想要的,请评论:)

答案 1 :(得分:1)

这可能是你想做的事情的一种方式:

function doThing(message)
{ 
    var data = {};
    $.ajax({type: 'POST', data: JSON.stringify(data), contentType: 'application/json', 
                url: '/legone/survey/'+message+'',                      
                success: function(data) {   
                    }
                });
    alert("Successful backup on "+message+".");
}

var obj=[doThing.bind(null, "backupF31"), doThing.bind(null, "backupF32"), 
         doThing.bind(null, "backupF33"), doThing.bind(null, "backupF34"),
         doThing.bind(null, "backupF35")];

for (var thisObj of obj) {
    thisObj();
}

bind()使用预定义的参数创建一个函数调用,因此您可以在创建函数指针数组时捕获不同的参数。