我想知道是否有可能向库用户显示一个函数需要一个带有5个参数的回调,其中3个是数组(例如)。
或者换句话说,如何通知程序员不要弄乱回调参数?
这是一个代码示例:

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        callback(someArray[i]);
    }
}


程序员如何找出其回调函数应接受哪些参数?

最佳答案

Javascript没有类型检查参数,您无法对回调进行运行时检查以查看其期望的参数。您可以在运行时执行的一件事是,您可以检查callback.length来查看已声明期望作为形式参数的多少个参数。函数不需要定义其形式参数,因为它也可以使用arguments对象获取参数,但是如果您要强制它们以某种方式编程,则可以通过这种方式进行检查。有关更多信息,请参见this doc

最好的选择是好的文档,以使其绝对清楚(通常还带有示例代码)应如何编写回调。

如果您想稍微防弹库,则可以捕获回调中引发的所有异常并进行适当处理。

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        try {
            callback(someArray[i]);
        } catch(e) {
            // handle any exception in the callback
        }
    }
}

10-07 16:26
查看更多