常用的方法调用的缺点:方法比较固定,不易扩展。当需要对方法的调用进行修改或扩展时,需要直接修改调用方的代码。这可能导致代码的脆弱性,因为修改一个地方可能会对其他代码产生意外的影响。
例:
//实现功能:1+2^2+3^2+4^2
function sum(n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += i * i;
}
return sum;
}
将函数当作参数传递的优点:可扩展性性比较强,通过传递函数参数,可以轻松地扩展和修改方法的行为,而无需直接修改调用方的代码。这使得代码更加灵活和易于扩展。
例:
//调用方法:sunOfAnything(5,(x)=>{return x*x})
function sunOfAnything(n, f) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += f(i);
}
return sum;
}
//调用方法:anythingOfAnything(5,(x)=>{return x*x},(x,y)=>{return x*y},1)
function anythingOfAnything(n, f, comb, identity) {
let sum = identity;
for (let i = 1; i <= n; i++) {
sum = comb(sum, f(i));
}
return sum;
}
总之,将函数作为参数传递可以提供更大的灵活性和可扩展性。这种方式在函数式编程中得到广泛应用。