我正在玩函数式编程,并注意到当我将函数放在其他参数之前我的函数将不再有效时,为什么会这样?
作品
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);
答案 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上查看。请注意,此代码容易出错,仅供演示之用。