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 相关文章推荐
div层的移动及性能优化
Nov 16 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
Jan 25 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
Aug 01 Javascript
javascript与css3动画结合使用小结
Mar 11 Javascript
js实现异步循环实现代码
Feb 16 Javascript
javascript实现简单的on事件绑定
Aug 23 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
May 07 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
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验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
会计专业自我评价
2014/02/12 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
项目负责人任命书
2014/06/04 职场文书
精神病医院见习报告
2014/11/03 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
雨中的树观后感
2015/06/03 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技