我正在研究回调概念,经常看到f参数之一被用作“函数调用”:callback(arr [i]),但它还不是函数。我想我们期望参数之一是一个函数,所以这是可以接受的方法吗?

参考:

function processArray(arr, callback) {
    var resultArr = new Array();
    for (var i = arr.length - 1; i >= 0; i--)
        resultArr[i] = callback(arr[i]);
    return resultArr;
}

最佳答案

看。如果要处理数组的每个项目并获取包含字符串表示形式的length的新数组,则可以执行



function processArray(arr, callback) {

    if(typeof callback !== 'function') {
        throw new Error('The callback is not a function');
    }

    const resultArr = new Array();

    for (var i = arr.length - 1; i >= 0; i--) {
        resultArr[i] = callback(arr[i]);
    }

    return resultArr;
}

const weekdays = ['Monday', 'Tuesday', 'Wednesday'];
console.log(processArray(weekdays, item => item.length));





如果您现在想将它们全部大写并获得另一个数组怎么办?



function processArray(arr, callback) {

    if(typeof callback !== 'function') {
        throw new Error('The callback is not a function');
    }

    const resultArr = new Array();

    for (var i = arr.length - 1; i >= 0; i--) {
        resultArr[i] = callback(arr[i]);
    }

    return resultArr;
}

const weekdays = ['Monday', 'Tuesday', 'Wednesday'];
console.log(processArray(weekdays, item => item.toUpperCase()));





对于这两个操作,如果我们不传递回调函数,则需要使用自己的操作创建2个独立的函数。通过传递参数,我们使函数具有通用性,因此我们为单个函数提供了处理每个项目的逻辑并返回结果。

它将为每个项目调用该函数,将该项目作为参数传递给函数并返回结果。然后,将结果放入新的映射数组中。

那可以接受的方法呢?

是的,这是可以接受的方法。这是一种非常现代的方法。您有一个函数,该函数对每个项目都会传递任何逻辑。在Javascript中,有许多使用此样式的内置函数(例如Array#mapArray#forEach)。还有很多库都具有此类类型函数,这不仅在Javacript中。

10-07 20:06
查看更多