JavaScript中一等公民 —— 函数

在JavaScript中,函数是非常重要的,并且是一等公民。所谓的一等公民到底是什么呢?

首先,函数的使用是非常灵活的;
其次函数可以作为另外一个函数的参数;
最后函数也可以终作为一个函数的返回值使用。(高阶函数

接下来就展示一下函数的灵活性。

1.函数作为参数使用

// 将函数做为另一个函数的参数
function foo (a) {a()
}
function fn () {console.log('fn')
}foo(fn) //将函数fn 作为函数foo的参数使用   输出结果为 fn

上面展示了一个最简单的使用,供大家参考理解,接来下展示一个小案例,示例代码如下:

// 创建一个calc函数,前两个参数为数字,第三个参数为计算函数 (名称顺序均为自定义)
function calc (num1, num2, calcFn) {console.log(calcFn(num1, num2))
}// 创建一个加法函数
function add (num1, num2) {return num1 + num2
}
// 创建一个减法函数
function sub (num1, num2) {return num1 - num2
}
// 创建一个乘法函数
function mul (num1, num2) {return num1 * num2
}var a = 20
var b = 30
// 调用calc函数传递不同的函数作为第三个参数,进行不同的方法计算,得到不同的输出结果
calc(a, b, add) // 50
calc(a, b, sub) // -10
calc(a, b, mul) // 600

2.函数作为返回值使用

众所周知,JS语法是允许在函数内部再定义函数的。
如下展示一个通俗易懂的小demo进行展示函数作为返回值的使用,示例代码如下:

// 在foo函数中嵌套一个bar函数
function foo () {function bar () {console.log('bar')}return bar // bar函数做为foo函数的返回值使用
}
var fn = foo()
fn() // bar

变量fn被赋值后就指向于foo函数中的bar函数,所以对fn()进行调用的到bar函数的打印结果

接着展示一个稍微有一丢丢绕的小demo(其实一点都不绕),示例代码如下:

// add函数作为makerAdder函数的返回值使用, makeAdder函数接收一个count的参数
function makeAdder (count) {// add函数接收一个num的参数,返回count与num的和function add (num) {return count + num}return add
}var add5 = makeAdder(5)  //  此时的add5 意味着等于 函数makeAdder中的函数add
console.log(add5(6)) // 11
console.log(add5(10)) // 15

这里给补充一个高阶函数的定义 :把一个函数如果接收另一个函数作为参数,或者该函数会返回另个一个函数作为返回值的函数,那么这个函数就称之为高阶函数。
所以上面的两个知识点所展示的代码都可以称为高阶函数。

JavaScript高级语法之一等公民——函数(高阶函数)相关推荐

  1. 函数式编程 -- 函数是一等公民、高阶函数、闭包

    文章内容输出来源:拉勾教育 大前端高薪训练营 前言 学习函数式编程,首先要了解函数式编程相关的概念. 一.函数是一等公民 1. 一等公民的定义 根据维基百科,编程语言中一等公民的概念是由英国计算机学家 ...

  2. Clickhouse 数组函数 高阶函数

    数组函数的概述: Clickhouse> select version();SELECT version()┌─version()───┐ │ 20.8.1.4447 │ └────────── ...

  3. Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  4. 偏函数 匿名函数 高阶函数 map filter reduce

    # 偏函数 创建一个新的函数,指定我们要使用的函数的某个参数为固定的值,这个新函数就是偏函数 def test(a, b, c, d=1):print(a + b + c + d)from funct ...

  5. Python基础-函数,高阶函数

    Python基础-函数 1.函数的定义和函数的执行流程: """ 函数学习 """print('程序开始') a = 10 # 在内存中申请 ...

  6. 廖雪峰讲python高阶函数-高阶函数

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

  7. python匿名函数里用if_python匿名函数 高阶函数 内置函数 文件操作

    1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...

  8. 高级JavaScript Day03 | 函数定义和调用、this、严格模式、高阶函数、闭包、递归

    1.函数的定义和调用 1.1 函数的定义方式 1.函数的声明方式 function关键字 (命名函数) // 1. 自定义函数(命名函数)function fn() {}; 2.函数表达式 (匿名函数 ...

  9. JavaScript|JavaScript 高级语法——详细汇总

    JavaScript 高级语法 目录 JavaScript 高级语法 一.变量提升和函数提升 作用域的概念 1. 变量提升 ① 变量提升 ② 变量提升后,与外界同名变量不会相互影响 ③ 多次声明变量 ...

最新文章

  1. linux如何安装VM虚拟机
  2. 深度学习基础系列(八)| 偏差和方差
  3. 就有趣,Python生成字符视频
  4. 比特位计数—leetcode338
  5. R绘图系统中的坐标系
  6. 【评论送书】适合初学者的 6 个有趣的 R 语言项目
  7. 短时傅里叶变换原理解
  8. 跨国公司怎样面试应聘者
  9. (过桥问题)小明一家过一座桥,过桥时是黑夜,所以必须有灯
  10. 总账科目往来批量导入程序
  11. android播放语音,切换听筒模式遇到的问题
  12. Word——打开word时,提示由于宏安全设置,无法找到宏或宏被禁用的一种解决办法
  13. Linux中write命令------实现用户间信息传递
  14. 离散控制 discrete control
  15. Atcoder Codefestival Exhibition/Team Relay/Tournament Round 简要题解
  16. 浅谈Echarts3.0
  17. 仿淘宝,天猫评分效果
  18. vs2010打包系统必备选择.net framework 3.5sp1编译错误的解决方法
  19. Docker的实现原理以及与容器的区别
  20. 哈密顿回路的非暴力解法(转自CSDN大神GDTZX)

热门文章

  1. Photoshop 2023 Beta爱国版下载及AI绘图功能介绍和安装教程
  2. Tcp通信中服务器处理客户端意外断开!
  3. 页面新开Tab页实现方式
  4. VBscript脚本语言
  5. c语言中如何返回一个数组函数
  6. mpu6050算速度_MPU6050 抄底解读
  7. python中主要的英语单词汇总
  8. [建站日记]3day 回到命令行界面
  9. caoz谈能力成长系列 - 机会来自于担当
  10. 初识c++(33)之用星花*定义指针时,星花*的右结合性