Javascript 为什么参数的顺序很重要?

Javascript 为什么参数的顺序很重要?,javascript,Javascript,我在玩函数编程,注意到当我把函数放在其他参数之前时,我的函数将不再工作,这是为什么 有效 function forEach(array, action){ for (var i = 0; i < array.length;i++){ action(array[i]);} } forEach(["bbq","is","not","phoot"],alert); 函数forEach(数组、动作){ for(var i=0;i

我在玩函数编程,注意到当我把函数放在其他参数之前时,我的函数将不再工作,这是为什么

有效

function forEach(array, action){
  for (var i = 0; i < array.length;i++){
    action(array[i]);}
}

forEach(["bbq","is","not","phoot"],alert);
函数forEach(数组、动作){
for(var i=0;i
不起作用

function forEach(action, array){
  for (var i = 0; i < array.length;i++){
    action(array[i]);}
}

forEach(["bbq","is","not","phoot"],alert);
函数forEach(动作、数组){
for(var i=0;i
参数的顺序很重要,因为函数无法猜测哪个参数是数组,哪个参数是动作

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

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