为什么参数的顺序很重要

Why does order of parameters matter?

本文关键字:顺序 参数 为什么      更新时间:2023-09-26

我正在玩函数式编程,并注意到当我把函数放在其他参数之前,我的函数将不再工作,为什么会这样?

function forEach(array, action){
  for (var i = 0; i < array.length;i++){
    action(array[i]);}
}
forEach(["bbq","is","not","phoot"],alert);

不工作

function forEach(action, array){
  for (var i = 0; i < array.length;i++){
    action(array[i]);}
}
forEach(["bbq","is","not","phoot"],alert);

参数的顺序很重要,因为函数无法猜测哪个参数是数组,哪个参数是操作。

您可以根据参数的类型做出决策,从而使函数更智能一些。例如:

function forEach() {
    var array = typeof arguments[0] === 'function' ? arguments[1] : arguments[0];
    var action = typeof arguments[0] === 'function' ? arguments[0] : arguments[1];
    for (var i = 0; i < array.length;i++) {
       action(array[i]);
    }
}

它处理两种情况:

forEach(["bbq","is","not","phoot"], alert);
forEach(alert, ["bbq","is","not","phoot"]);

在JSFiddle上看到它。请注意,这段代码很容易出错,只是为了演示。