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编程起步(第一课)
Jan 10 Javascript
最简单的jQuery程序 入门者学习
Jul 09 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 Javascript
关于JavaScript数组你所不知道的3件事
Aug 24 Javascript
探索Javascript中this的奥秘
Dec 11 Javascript
JS闭包用法实例分析
Mar 27 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
小程序实现图片移动缩放效果
May 26 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
php 团购折扣计算公式
2011/11/24 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
如何提高python 中for循环的效率
2020/04/15 Python
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
初入社会应届生求职信
2013/11/18 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
寄语十八大感言
2014/02/07 职场文书
和谐社区口号
2014/06/19 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
赔偿协议书
2015/01/27 职场文书
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js