我认为我对回调的理解还很幼稚。但这是到目前为止的情况,我的功能只是将每个数组中的第一个索引加在一起。
var merge = function(array1, array2, callback){
for (var i = 0; i < array1.length; i++) {
return array1[i] + array2[i];
};
callback(array1[i] + array2[i]);
};
var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(a, b){
return a + b;
});
console.log(x);
最佳答案
当您使用回调时,您的代码流现在是通过回调而不是返回和变量赋值。我在您的代码中看到混合用法,我不清楚您的代码试图做什么。 for 循环内的 return
将在调用回调之前终止合并函数。
我可能会调整你的代码:
var merge = function(array1, array2, callback){
var result = [];
for (var i = 0; i < array1.length; i++) {
result[i] = array1[i] + array2[i];
};
callback(result);
};
var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(merged) {
console.log(merged);
});
这会将此结果记录到控制台:
[6, 8, 10, 12]
为了更进一步,我还会在 for
循环中使用 Math.max(array1.length, array2.length)
来确保结果数组是long 作为最长的输入数组。那里有点复杂,但我想指出一个潜在的问题。
关于javascript - 我试图通过编写回调来使 "merge function"工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715826/