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 相关文章推荐
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
自己用jQuery写了一个图片的马赛克消失效果
May 04 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
javascript实现的简单的表单验证
Jul 10 Javascript
jQuery实现的自动加载页面功能示例
Sep 04 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
javascript  数组排序与对象排序的实例
Jul 17 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 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为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php比较相似字符串的方法
2015/06/05 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
微信小程序form表单组件示例代码
2018/07/15 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Django框架验证码用法实例分析
2019/05/10 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
什么是属性访问器
2015/10/26 面试题
农村改厕实施方案
2014/03/22 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
新员工入职欢迎词
2015/01/23 职场文书
大学生见习总结报告
2015/06/24 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python