js里常用函数之高阶函数

高阶函数:将函数作为参数或者返回值的函数。将函数作为参数的用法通常称作回调函数,函数参数通常会在主函数被执行之后被高阶函数调用。

高阶函数的使用实例。可以把有相似操作的函数用一个高阶函数来重构,精简代码

如有一个比较函数:compareNumbers

 1 function compareNumbers(x, y){
 2
 3   if(x > y){
 4
 5     return -1;
 6
 7   }else{
 8
 9     return 1;
10
11   }
12
13   return 0;
14
15 }
16
17 //我们在排序的时候讲compareNumbers作为参数传递给sort 函数,就可以指定数组的排序方式
18
19 [3, 1, 4, 1, 5, 9].sort(compareNumbers);//[1, 1, 3, 4, 5, 9]

当然我们可以直接把compareNumbers替换为一个匿名函数,简化代码。

 1 [3, 1, 4, 1, 5, 9].sort(function (x, y) {
 2
 3   if(x > y){
 4
 5     return -1;
 6
 7   }else{
 8
 9     return 1;
10
11   }
12
13   return 0;
14
15 });//[1, 1, 3, 4, 5, 9]

生成26个字母组成的字符串

 1 var aIndex = "a".charCodeAt(0);//97 字符a的ascii编码
 2
 3 var alphabet = "";
 4
 5 for (var i = 0; i < 26; i++){
 6
 7   alphablet += String.fromCharCode(aIndex +i);
 8
 9 }
10
11 alphabet;//"abcdefghijklmnopqrstuvwxyz"

生成一个包含数字的字符串

1 var digits = ‘‘‘;
2
3 for (var i = 0; i< 10; i++){
4
5   digits += i;
6
7 }
8
9 digits;//"0123456789"

创建一个随机的字母字符串,长度为8

1 var random = "";
2
3 for (var i = 0; i < 8; i++){
4
5   random = String.fromCharCode(Math.floor(Math.random() * 26) + aIndex);
6
7 }
8
9 random;//"bdwvfrtp"

对于上面的三种生成字符串的逻辑,基本类似,只是生层规则不一样,我们就可以把不同生成字符串的逻辑抽出,放到一个函数类型的形参里。

 1 function buildString(n, callback) {
 2
 3   var result = "";
 4
 5   for(var i = 0; i < n; i++) {
 6
 7     result += callback(i);
 8
 9   }
10
11   return result;
12
13 }

现在可以简化这三个生成字符串的方法为:

 1 var alphabet = buildString(26, function(i){
 2
 3   return String.fromChar(aIndex + i);
 4
 5 });
 6
 7
 8 var digits = buildString(10, function(i){
 9
10   return i;
11
12 });
13
14
15 var alphabet = buildString(26, function(i){
16
17   return String.fromChar(Math.floor(Math.random()*26));
18
19 });

参考资料:Effective JavaScript

时间: 2024-07-30 03:02:03

js里常用函数之高阶函数的相关文章

Python函数,匿名函数,高阶函数,内置函数——08

函数 当一个函数的返回值是另一个函数的函数名时,只是返回该函数的内存地址,该函数的作用域不会发生改变. name = 'winsodm' def test(): name = 'xl' print('in the test') def test1(): print('in the test1') return test res = test1() res() #结果是: name = 'xl' 'in the test' #这里返回的test 之后运行 还是输入test里的变量name的值,而不

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO

8-[函数]-嵌套函数,匿名函数,高阶函数,递归函数

1.嵌套函数 (1)多层函数套用 name = "Alex" def change_name(): name = "Alex2" def change_name2(): name = "Alex3" print("第3层打印", name) change_name2() # 调用内层函数 print("第2层打印", name) change_name() print("最外层打印",

函数-内置函数,匿名函数,嵌套函数,高阶函数,序列化

函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim

Day3-递归函数、高阶函数、匿名函数、内置函数

一.递归函数 定义:函数内部可以调用其它函数,如果调用自身,就叫递归. 递归特性: 1.必须有结束条件退出: >>> def calc(n): ... print(n) ... return calc(n+1) ... >>> calc(0) 0 1 ... 998 RecursionError: maximum recursion depth exceeded while calling a Python object 分析: 没有结束条件,超过最大递归次数999次后

[ python ] 匿名函数和高阶函数

匿名函数 描述:    关键字 lambda 定义的函数    语法: 函数名 = lambda 参数:返回值 返回值:    函数返回结果值 实例: 一个参数的匿名函数: func = lambda x: x*x f = func(2) print(f) # 执行结果: # 4 多个参数的匿名函数: func = lambda x, y: x+y f = func(1, 2) print(f) # 执行结果: # 3 高阶函数 (1)map 描述:    map()会根据提供的函数对指定序列做

函数之高阶函数

1:函数可以赋值给一个变量名字 ,函数参数能接收变量 这个函数也可以接收另一个函数的函数名作为参数,那么这就是一个高阶函数ef func1(): print('老王好帅!')def func2(ff): ff() return '老王媳妇好美!'print(func2(func1)) 2:一个函数可以接收一个或者多个函数 #一个函数接收一个或者多个函数名作为参数又或者返回一个函数 这样的函数也是高阶函数 1:def func(x, y): return x+ydef calc(x): retur

python开发之路---第二章之--函数之高阶函数

## 一个函数的变量为另一个函数,这种函数就称为高阶函数 ## return 一个函数名也可以称为高阶函数 def func(x,y): return x+y def cale(x): return x f = cale(func) a = f(4,5) print (a) ## 这里的实际上执行的是func的函数,所以不传参数的话会报错,必须传入2个参数, 原文地址:https://www.cnblogs.com/LoveElsa/p/10280029.html