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 读后台cookie代码
Sep 15 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
JQuery文字列表向上滚动的代码
Nov 13 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
js进行表单验证实例分析
Feb 10 Javascript
JavaScript编程中window的location与history对象详解
Oct 26 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
JavaScript oncopy事件用法实例解析
May 13 Javascript
原生js实现日期选择插件
May 21 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中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
python实现汽车管理系统
2018/11/30 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
python小项目之五子棋游戏
2019/12/26 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Python偏函数实现原理及应用
2020/11/20 Python
鱼油专家:Omegavia
2016/10/10 全球购物
数学教学随笔感言
2014/02/17 职场文书
士力架广告词
2014/03/20 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
2015年国培研修感言
2015/08/01 职场文书
Linux中各个目录的作用与内容
2022/06/28 Servers