JavaScript 如何使用回调

javascript how to use call backs

本文关键字:回调 何使用 JavaScript      更新时间:2023-09-26

我需要这个JS回调函数的帮助。我试图弄清楚回调在 JS 中是如何工作的。

-

-快速测试代码如下:

function debFilter(deb_array, fillCb){
    var filt_darr = [];
    for (var inx in deb_array) {
        filt_darr.push(fillCb(deb_array[inx]));
    }
  return filt_darr;
}
console.log(debFilter(savedInp, function(x) { if (x%2 == 0) { return x;}} ));  

假设我的 savedInp 数组包含 [2,3,4,5,6,7,8,9] 类似的东西。如何确保我的回调只返回偶数元素而不返回奇数元素?所以我的filt_darr是[2,4,6...等]。使用上面的测试代码,我得到[2,未定义,4,未定义,..等]。我也尝试过其他类似的条件,但无济于事。我只需要知道如何告诉JS不要"推送/返回"我不需要的东西。对不起,如果这是一个初学者Q。感谢您的帮助。

迭代数组,然后将偶数推送到新数组中:

 var a = [1,2,3,4,5];
 function getEvens(originalArray){
  var evens = [];
   for(var i = 0; i < originalArray.length; ++i){
     if(originalArray[i] % 2 === 0){
        evens.push(originalArray[i]);
     }
   }
   return evens;
 }

您可能已经注意到,您将每个返回值收集到结果数组中,并且回调为每个奇数返回undefined。您可以将代码更改为类似

function debFilter(deb_array, fillCb){
        'use strict';
        var filt_darr = [],
            len = deb_array.length;
        for (var i = 0; i < len; i++) {
            if (fillCb(deb_array[i])) {
                  filt_darr.push(deb_array[i]);
            }
        }
        return filt_darr;
    }

顺便说一下,ES 5支持Array.prototype.filter,这可能是你正在寻找的。还有一个填充物,您可以从中获取一些灵感。