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 相关文章推荐
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
js和jquery对dom节点的操作(创建/追加)
Apr 21 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
js new Date()实例测试
Oct 31 Javascript
Vue实现Layui的集成方法步骤
Apr 10 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
vue - props 声明数组和对象操作
Jul 30 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
web前端开发也需要日志
2010/12/09 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
python3中dict(字典)的使用方法示例
2017/03/22 Python
python实现发送邮件功能代码
2017/12/14 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
python for 循环获取index索引的方法
2019/02/01 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
老公给老婆的保证书
2014/04/28 职场文书
给校长的建议书100字
2014/05/16 职场文书
法律系毕业生求职信
2014/05/28 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL