为什么参数顺序很重要?

时间:2014-06-17 23:10:28

标签: javascript

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

作品

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);

1 个答案:

答案 0 :(得分:1)

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

通过根据参数类型做出决定,您可以使功能更加智能化。例如:

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上查看。请注意,此代码容易出错,仅供演示之用。