ai 起来,看看这个愚蠢的代码。我想传递一个字符串或一个数组并返回数据。这段代码确实有效,但很糟糕。作为消除重复并尽可能优化它的最佳方法,您会推荐什么?谢谢:)
var getData = function (dataFile) {
var ajaxResponse = [],
loop,
i;
if(dataFile instanceof Array) {
loop = dataFile.length;
for(i = 0; i < loop; i++) {
$.ajax({
url: dataFile[i],
type: "post",
async: false,
dataType: "json",
success: function (data) {
ajaxResponse[i] = data;
}
});
}
}
else {
$.ajax({
url: dataFile,
type: "post",
async: false,
dataType: "json",
success: function (data) {
ajaxResponse = data;
}
});
}
return ajaxResponse;
}
谢谢大家,我得考虑一下。如果我愿意,我可以将所有参数作为数组传递,但这会导致我在其他地方出现问题。基本上我需要以返回值的相同方式获取返回值,即单个值或数组。所要求的数据是完全不同的。我可以改变它,但我必须调查从长远来看哪种方式会更好。
最佳答案
如果我正确理解代码,这应该可以工作:
if(!(dataFile instanceof Array))
dataFile = [dataFile];
即,如果它不是数组,则创建一个仅包含该项目的数组。然后总是执行循环,尽管在某些情况下它只会有一次迭代。
我应该补充您想要查看您在 for 循环中对 i
变量的使用。您应该将声明更改为 for(var i...
,而不仅仅是 for(i...
。在没有 var
的情况下引入变量> 关键字 将始终使该变量成为全局变量。这意味着该循环很可能会在另一个函数中的完全不同的 for 循环中更改 i
的值,而您将完全不知道发生了什么。
关于javascript - 优化循环 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955754/