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 硬盘序列号+其它硬件信息
Dec 23 Javascript
JQuery困惑—包装集 DOM节点
Oct 16 Javascript
jQuery 加上最后自己的验证
Nov 04 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
May 23 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
php下通过POST还是GET来传值
2008/06/05 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
python 垃圾收集机制的实例详解
2017/08/20 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python 识别图片中的文字信息方法
2018/05/10 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python关于变量名的基础知识点
2020/03/03 Python
详解python datetime模块
2020/08/17 Python
python eventlet绿化和patch原理
2020/11/21 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
美容院营销方案
2014/03/05 职场文书
空乘英文求职信
2014/04/13 职场文书
2014年信访工作总结
2014/11/17 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers