广告
返回顶部
首页 > 资讯 > 精选 >JS5高阶函数有哪些
  • 267
分享到

JS5高阶函数有哪些

2023-06-21 21:06:09 267人浏览 泡泡鱼
摘要

这篇文章主要介绍“js5高阶函数有哪些”,在日常操作中,相信很多人在JS5高阶函数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS5高阶函数有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!1、

这篇文章主要介绍“js5高阶函数有哪些”,在日常操作中,相信很多人在JS5高阶函数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS5高阶函数有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    1、前言

    javascript中,函数实际上也是一个数据,也就是说函数也可以赋值给一个变量。

    2、递归

    所谓的递归,就是指函数自己调用自己;用一个故事来说呢就是:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'” 。

    从某种意义上说,递归近似于循环。两者都重复执行相同的代码,并且两者都需要一个终止条件,以避免无限循环或者无限递归。

    递归所需要的必要条件如下:

    • 子问题跟原始问题一样,且更为简单

    • 必须有个出口

    在JavaScript中想要递归调用存在两种方式

    • 通过使用函数名实现

    • 通过使用arguments.callee属性实现。

    如下代码展示了简单的递归:

    var v = 1 // 出口条件function fun() {  console.log('第' + v + '次调用函数')  v++  if (v <= 3) {    fun()  }}fun()

    执行结果如下

    第1次调用函数
    第2次调用函数
    第3次调用函数

    3、回调函数

    然函数与任何可以被赋值给变量的数据是相同的,那么它当然可以像其他数据那样被定义、删除、拷贝,以及当成参数传递给其他函数。

    当一个函数作为参数传递给另一个函数时,作为参数的函数被称之为回调函数。作为使用回调函数的函数称为目标函数(外层函数)

    示例代码如下所示:

    // 定义一个函数,这个函数有两个函数类型的参数,然后分别执行那两个函数,并返回它们的和。function sum(a, b) {  // 目标函数  return a() + b()}function one() {  // 回调函数  return 1}function two() {  // 回调函数  return 2}console.log(sum(one, two)) // 3

    代码执行流程如下:

    当执行sum函数时,传入两个实参,在sum函数中,会将两个实参作为函数执行,并将返回值计算并返回。

    3.1匿名回调函数

    所谓匿名回调函数,就是目标函数中的参数是没有名称的函数,将上一段代码修改为使用匿名回调函数

    // 定义一个函数,这个函数有两个函数类型的参数,然后分别执行那两个函数,并返回它们的和。function sum(a, b) {  // 目标函数  return a() + b()}console.log(  sum(    function () {      // 匿名回调函数      return 1    },    function () {      //  匿名回调函数      return 2    },  ),) // 3

    3.2带参数的回调函数

    回调函数是可以增加参数的,示例代码如下:

    function multiplyByTwo(list, callback) {  list.forEach(function (v, i) {    callback(v * 2, i)  })}var list = [1, 2, 3]multiplyByTwo(list, function (v, i) {  list[i] = v})console.log(list) // [ 2, 4, 6 ]

    3.3回调函数的优缺点

    • 匿名回调函数节省了全局命名空间

    • 将私有的数据内容开放给指定位置使用

    • 保证封装性——虽然可以使用私有数据,但是并不知道来源

    • 有助于提升性能

    但是回调函数也是有缺点的,当目标函数的参数是一个回调函数时,回调函数的参数又是另一个回调函数,另一个回调函数的参数还是一个回调函数…也就是套娃,也就形成了回调陷阱,严重一点可以说回调地狱。

    4、自调函数

    所谓的自调函数,就是定义后立即调用的函数,示例代码如下所示:

    ;(function () {  console.log('自调函数')})()

    这种语法看上去有点唬人,其实没有什么,我们只需将匿名函数的定义放进一对括号中,然后外面再紧跟一对括号即可。

    语法结构如下图所示:

    JS5高阶函数有哪些

    自调函数除了以上两种方式外,还有以下几种不常用的方式,示例代码如下:

    ;+(function (v) {  // 形参  var w = 100 // 局部变量  console.log('自调函数' + v)})(1) // 实参!(function (v) {  var w = 100 // 局部变量  console.log('自调函数' + v)})(2)~(function (v) {  var w = 100 // 局部变量  console.log('自调函数' + v)})(3)

    使用自调匿名函数的好处是不会产生任何全局变量。

    缺点在于这样的函数是无法重复执行的(除非将它放在某个循环或其他函数中)。这也使得即时函数非常适合于执行一些一次性的或初始化的任务。

    5、为值的函数

    将一个函数作为另一个函数的结果并返回,作为结果返回的函数称之为作为值的函数。

    示例代码如下:

    function outer() {  var v = 100  // 在函数的函数体中定义另一个函数 -> 内部(私有)函数  return function () {    // 使用匿名函数    return v * 2  }}var result = outer()console.log(result) // [Function]

    这样做的好处是:

    • 有助于我们确保全局名字空间的纯净性(这意味着命名冲突的机会很小)。

    • 确保私有性 — 这使我们可以选择只将一些必要的函数暴露给“外部世界”,而保留属于自己的函数,使它们不为该应用程序的其他部分所用。

    6、闭包

    闭包是在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。

    实际上闭包可以看做一种更加广义的函数概念。因为其已经不再是传统意义上定义的函数。

    闭包的条件:

    • 外部函数中定义了内部函数。

    • 外部函数是具有返回值,且返回值为内部函数。

    • 内部函数还引用了外部函数的变量。

    闭包的缺点:

    • 作用域没有那么直观。

    • 因为变量不会被垃圾回收所以有一定的内存占用问题。

    闭包的作用:

    • 可以使用同级的作用域。

    • 读取其他元素的内部变量。

    • 延长作用域。

    • 避免污染全局变量

    闭包的原理:

    我们可以将函数的执行分成两个阶段,即预编译阶段和执行阶段;

    • 在预编译阶段,如果发现内部函数使用了外部函数的变量,它就会在内存中 创建一个闭包对象并保存相对应的值,如果已经存在闭包,则只需要增加对应属性值即可。

    • 在执行完成后,函数执行上下文会被校徽,函数对闭包对象的引用也会被销毁,但其内部函数还持有该闭包的引用,所以内部函数还可以继续使用外部函数的变量

    闭包主要是利用作用域链的特性,一个函数内部定义的函数会将包含该函数的活动对象添加到自己本身的作用域链中,函数执行完毕,其执行作用域链销毁,但因内部函数的作用域链仍然引用这个活动对象,所以其活动对象不会被销毁,直到内部函数被销毁后这些活动对象才会被销毁。

    闭包的实现的demo:

    // 1. 通过返回的内部函数来操作函数中的局部变量function fun () {    var v = 100; // 局部变量    // 通过返回一个对象的方式访问局部变量v 来完成闭包    return {        set: function (x) {            v = x;        },        get: function () {            return v        }    }}var result = fun();result.set(200)console.log(result.get()); // 200
    // 2. 定义一个局部变量,计算该函数一共调用几次var generate_count = function () {    var container = 0;    return function () {        container++        console.log(`这是第${container}次调用`);    }}var result = generate_count();result(); // 这是第1次调用result(); // 这是第2次调用result(); // 这是第3次调用
    // 3.修改 Math.pow() 函数,让求一个数的平方或者立方时,不需要每次传递第二个参数// 写一个函数生成器function makePower (power) {    return (number) => {        return Math.pow(number, power)    }}// 平方let power2 = makePower(2)// 立方let power3 = makePower(3)// 求4的平方console.log(power2(4)) // 16// 求4的立方console.log(power3(4)) // 62

    到此,关于“JS5高阶函数有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: JS5高阶函数有哪些

    本文链接: https://www.lsjlt.com/news/301011.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • JS5高阶函数有哪些
      这篇文章主要介绍“JS5高阶函数有哪些”,在日常操作中,相信很多人在JS5高阶函数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS5高阶函数有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!1、...
      99+
      2023-06-21
    • python高阶函数有哪些
      python中的高阶函数有:1.map()函数;2.reduce()函数;3.filter()函数;python中的高阶函数有以下几种map()函数map()函数是python中一个内置的高阶函数,它可以接收一个函数f和一个list,并通过...
      99+
      2022-10-24
    • python中有哪些高阶函数
      python中的高阶函数有以下几种map函数map函数可以接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并且把结果作为新的列表返回。reduce函数reduce函数是将一个函数作用到一个序列上,这个函数必...
      99+
      2022-10-22
    • 常用的python高阶函数有哪些
      常用的Python高阶函数包括:1. map(function, iterable):对可迭代对象中的每个元素应用函数,并返回一个迭...
      99+
      2023-08-09
      python
    • js函数式编程中的高阶函数有哪些
      小编给大家分享一下js函数式编程中的高阶函数有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!函数式编程-->高阶函数缺点,不能进行流程控制mapcons...
      99+
      2023-06-17
    • Python常见内置高阶函数有哪些
      这篇文章给大家分享的是有关Python常见内置高阶函数有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.什么是高阶函数?  高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数...
      99+
      2023-06-21
    • 高阶函数
      一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数 编写高阶函数,就是让函数的参数能够接收别的函数 函数式编程就是指这种高度抽象的编程范式 高阶函数的特点   变量可以指向函数     函数本身也可以赋值给变量,即:变...
      99+
      2023-01-31
      高阶 函数
    • python3--高阶函数
      # Auther: Aaron Fan'''# 高阶函数:把一个函数名,以实参的形式,传给这个函数的形参,这个函数就称为高阶函数。比如下面的形参c,对应的实参是一个函数名abs。# 函数abs()的功能是取绝对值def add(a,b,c)...
      99+
      2023-01-31
      高阶 函数
    • Python 高阶函数
      高阶函数:简单来讲,一个函数可以接收另一个函数来作为参数,这样的函数称之为高阶函数 map函数 会根据提供的函数对指定序列做映射,也就是说将函数作用在指定序列 语法为 map(function,interable...) ...
      99+
      2023-01-30
      高阶 函数 Python
    • python高阶函数
      高阶函数定义:1.函数接收的参数是一个函数名;2.函数返回的是一个函数名;只要满足上述条件中的任意一个条件的函数均属于高阶函数 例如:1.函数接收的参数为函数名2.函数返回的结果为函数名3.函数接收的参数为函数名,函数返回的结果为函数名...
      99+
      2023-01-31
      高阶 函数 python
    • vue高阶组件有哪些
      今天小编给大家分享的是vue高阶组件有哪些,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。在vue中,高阶组件其实就是一个高阶函数, 即返回一个组件函数的函数。高阶组件的特点:1、是无...
      99+
      2023-07-04
    • python有哪些高级函数
      这篇文章给大家介绍python有哪些高级函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能...
      99+
      2023-06-14
    • 高级Python函数有哪些
      这篇文章主要介绍“高级Python函数有哪些”,在日常操作中,相信很多人在高级Python函数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”高级Python函数有哪些”的疑惑有所帮助!接下来,请跟着小编...
      99+
      2023-06-16
    • Python常见内置高阶函数即高阶函数用法
      目录1.什么是高阶函数?2.高阶函数-map、filter、reduce2.1map函数2.2filter函数2.3reduce函数1.什么是高阶函数?   高阶函数:一个函数可...
      99+
      2022-11-12
    • Oracle函数-高阶篇
      下面整理了部分oracle函数-高阶篇:1、 CATSTR    举例:SELECT CATSTR(COLUMN_NAME) NAME_LIST FROM DBA_TA...
      99+
      2022-10-18
    • python 高阶函数:Decorato
      装饰器:原函数基础 ------> 动态添加功能一、不带参数的decorator#decorator封装def log(func):    def wrapper(*args, **kw):        print 'call %s...
      99+
      2023-01-31
      高阶 函数 python
    • 有哪些高效的Pandas函数
      这篇文章主要讲解了“有哪些高效的Pandas函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些高效的Pandas函数”吧!介绍这些函数之前,第一步先要...
      99+
      2022-10-19
    • 高效的Pandas函数有哪些
      本篇内容介绍了“高效的Pandas函数有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!介绍这些函数之前,第一步先要导入pandas和nu...
      99+
      2023-06-16
    • Python基础【高阶函数】
      map(fun,seq) 将seq中的元素依次作为参数传入fun,返回由函数返回值组成的新的列表。 python3:返回一个map对象 python2:返回列表 可以用list将对象转换为列表进行调用 代码: def f...
      99+
      2023-01-31
      高阶 函数 基础
    • Python_内建高阶函数
      sorted(iterable[,key][,reverse])排序  返回一个新列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是否排序翻转  sorted(lst,key=lambda x: 6-x)...
      99+
      2023-01-31
      内建 高阶 函数
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作