JS回调函数深入理解


Posted in Javascript onOctober 16, 2019

本文实例讲述了JS回调函数。分享给大家供大家参考,具体如下:

一、前奏

在谈回调函数之前,先看下下面两段代码:

不妨猜测一下代码的结果。

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或者匿名函数就被称为回调函数。

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

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

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

JS回调函数深入理解

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

JS回调函数深入理解

四、写在最后

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

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
从JavaScript的函数重名看其初始化方式
Mar 08 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 Javascript
JavaScript基础之静态方法和实例方法分析
Dec 26 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
Oct 16 #Javascript
js实现图片跟随鼠标移动效果
Oct 16 #Javascript
vue实现鼠标经过动画
Oct 16 #Javascript
javascript实现动态时钟的启动和停止
Jul 29 #Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 #Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 #Javascript
javascript实现点亮灯泡特效示例
Oct 15 #Javascript
You might like
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
angular十大常见问题
2017/03/07 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
公司合作意向书
2014/04/01 职场文书
二手房购房意向书范本
2014/04/01 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
政协调研汇报材料
2014/08/15 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
企业2014年度工作总结
2014/12/10 职场文书
党员违纪检讨书
2015/05/05 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书