1.刚开始学习编程的时候都是先是最简单的加减
int a = 1;
int b =2;
System.out.println(a+b);
打印出的结果肯定是3啦。
2.后面我们开始接触到循环,for循环。计算1加到100的和,这个所有应该都是不陌生的。
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
System.out.println(sum);
打印出来的结果是5050,这个没多大问题。
3.然后我们稍微变一下,我们计算一下 1 + 2^2 + 3^2 + 4^2 +……n^2
我们在js里面编写
function num(n) {
let sum = 0;
for (let i = 0; i <= n; i++) {
sum += i * i;
}
return sum;
}
PS:在js中是用function来声明函数,let相当于Java中的int、String等。
要打开网页F12在控制台输入参数。
如果我们把一个函数当参数使用看下结果会不会不一样
function anything(n, f) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += f(i);
}
return sum;
}
这里可以看到结果是一样的
4.我们继续加大难度计算(1/(1+2)+2/(2+3)+3/(3+4)+4/(4+5)+5/(5+6))这个时候就不是平方、立方之类的了,加上了加法。我们就要用上一种函数当参数的方法了,并且还要多加几个参数。
function anything(n, f, comb, identity) {
let sum = identity;
for (let i = 1; i <= n; i++) {
sum = comb(sum, f(i));
}
return sum;
}
在控制台输入
anything(5, (x)=>{return x+x}, (x,y)=>{return x/y},1)
就可以得到结果。
总结:
优点:
- 灵活性:通过将函数作为参数传递,我们可以在运行时决定要执行的具体逻辑,从而实现动态的行为。这使得代码更加灵活和可扩展。
- 可复用性:将函数作为参数传递,可以将通用的逻辑提取出来,成为一个独立的函数,可以在不同的上下文中重复使用,避免了代码的重复编写。
- 可组合性:通过将多个函数组合在一起,我们可以构建出更复杂的逻辑和功能。这种组合可以使代码更加模块化,易于理解和维护。
缺点 :
- 难以理解:对于初学者来说,理解函数作为参数传递的概念可能会比较困难,需要一定的学习和实践。
- 可读性较差:当函数作为参数传递时,代码的可读性可能会降低,特别是当函数的逻辑较为复杂时。
新手刚开始真的非常难受,不熟悉它的写法,在使用时也不熟悉。多写几遍会好很多,要一边写一边理清楚自己的逻辑。把函数当参数会更加的简洁、灵活,但逻辑性会更强、难度会加大。