js 彻底理解回调函数「建议收藏」

一、前奏在谈回调函数之前,先看下下面两段代码:不妨猜测一下代码的结果。functionsay(value){alert(value);}alert(say);alert(say(‘hijs.’));如果你测试了,就会发现:只写变量名say返回的将会是say方法本身,以字符串的形式表现出来。而在变量名后加()如say()返回的就会使say方法调用后的结果,这里

大家好,又见面了,我是你们的朋友全栈君。

一、前奏

在谈回调函数之前,先看下下面两段代码:
不妨猜测一下代码的结果。

function say (value) { alert(value); } alert(say);
alert(say('hi js.'));

如果你测试了,就会发现:

只写变量名  say   返回的将会是 say方法本身,以字符串的形式表现出来。
而在变量名后加()如say()返回的就会使say方法调用后的结果,这里是弹出value的值。

二、js中函数可以作为参数传递

再看下面的两段代码:

function say (value) { 
   
    alert(value);
}
function execute (someFunction, value) { 
   
    someFunction(value);
}
execute(say, 'hi js.');

与

function execute (someFunction, value) { 
   
    someFunction(value);
}
execute(function(value){ 
   alert(value);}, 'hi js.');

上面第一段代码是将say方法作为参数传递给execute方法
第二段代码则是直接将匿名函数作为参数传递给execute方法

实际上:

function say (value) { 
   
    alert(value);
}
// 注意看下面,直接写say方法的方法名与下面的匿名函数可以认为是一个东西
// 这样再看上面两段代码是不是对函数可以作为参数传递就更加清晰了
say;

function (value) { 
   
    alert(value);
}
这里的say或者匿名函数就被称为回调函数。

三、回调函数易混淆点——传参

如果回调函数需要传参,如何做到,这里介绍两种解决方案。

  • 将回调函数的参数作为与回调函数同等级的参数进行传递

回调函数传参方法1

  • 回调函数的参数在调用回调函数内部创建

回调函数参数在调用回调函数内部创建

四、写在最后

回调函数应用场景多用在使用 js 写组件时,尤其是组件的事件很多都需要回调函数的支持。
关于回调函数还有什么问题可以在下面留言,一起交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125080.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Origin绘图之条形图上加曲线拟合图

    Origin绘图之条形图上加曲线拟合图图形使用情境有时,写论文时,我们要做一些描述性统计,经常用到条形图来表示我们的数据,同时在条形图上可以加入曲线拟合的情况。如下图所示:绘图操作本博客以origin2017操作为例。首先是导入我们要绘图的数据,如下图所示:接着,按照下图所示操作,选择bar(条形图)最后,按照下图操作就行了…

    2022年5月16日
  • pycharm2022.01.13激活码CSDN-激活码分享

    (pycharm2022.01.13激活码CSDN)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
  • 《书谱》(书法理论知识)

    ٩(๑•ㅂ•)۶  夫自古之善书者,汉魏有钟、张之绝,晋末称二王之妙。王羲之云:“顷寻诸名书,钟张信为绝伦,其余不足观。”可谓钟、张云没,而羲、献继之。又云:“吾书比之钟张,钟当抗行,或谓过之。张草犹当雁行。然张精熟,池水尽墨,假令寡人耽之若此,未必谢之。”此乃推张迈钟之意也。考其专擅,虽未果于前规;摭以兼通,故无惭于即事。  评者云:“彼之四贤,古今特绝;而今不逮古,古质而今研。”夫质以代兴,妍因俗易。虽书契之作,适以记言;而淳醨一迁,质文三变,驰鹜沿革,物理常然。贵能古不乖时,今不同弊,所谓“文质彬

    2022年4月13日
  • mysql远程连接及用户相关命令

    一、创建用户并授权登录root:root@localhost:~#mysql-uroot-p创建username(用户)使用password(密码)从任何主机连接到mysql服务器:mysql>GRANTALLPRIVILEGESON*.*TO’username’@’%’IDENTIFIEDBY’password’WITHGRANTO…

    2022年4月6日
  • MySQL数据类型DECIMAL用法

    MySQL数据类型DECIMAL用法MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。要定义数据类型为DECIMAL的列,请使用

    2022年7月1日
  • ubuntu安装pycharm后找不到在哪_ubuntu安装类型

    ubuntu安装pycharm后找不到在哪_ubuntu安装类型1、下载PycharmLINUX版本2、复制到虚拟机,并解压在当前文件夹,右键安装包,点击“ExtractHere”3、打开终端,进入pycharm-2020.1.1/bin;4、执行pycharm.sh命令文件,开始安装;sh./pycharm.sh5.激活6.创建快捷方式6.1在/usr/share/applications创建一个文件:pycharm.desktop(touch,gedit,nano指令等)cd/usr/share/applicationssudoge

    2022年9月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号