js 彻底理解回调函数「建议收藏」

一、前奏在谈回调函数之前,先看下下面两段代码:不妨猜测一下代码的结果。functionsay(value){alert(value);}alert(say);alert(say(‘hijs.’));如果你测试了,就会发现:只写变量名say返回的将会是say方法本身,以字符串的形式表现出来。而在变量名后加()如say()返回的就会使say方法调用后的结果,这里

大家好,又见面了,我是你们的朋友全栈君。

一、前奏

在谈回调函数之前,先看下下面两段代码:
不妨猜测一下代码的结果。

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或者匿名函数就被称为回调函数。

三、回调函数易混淆点——传参

如果回调函数需要传参,如何做到,这里介绍两种解决方案。

  • 将回调函数的参数作为与回调函数同等级的参数进行传递

回调函数传参方法1

  • 回调函数的参数在调用回调函数内部创建

回调函数参数在调用回调函数内部创建

四、写在最后

回调函数应用场景多用在使用 js 写组件时,尤其是组件的事件很多都需要回调函数的支持。
关于回调函数还有什么问题可以在下面留言,一起交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125080.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle 入门_钢琴零基础入门教程

    oracle 入门_钢琴零基础入门教程本章内容:ØOracle介绍Ø安装步骤Ø基本使用Ø用户管理

    2022年8月31日
    0
  • echart旭日图_海报级设计感的旭日图,就在 ECharts 4.0

    echart旭日图_海报级设计感的旭日图,就在 ECharts 4.02018年1月16日ECharts发布了4.0,其中包括一种新的图表系列——旭日图。普通旭日图:文艺旭日图:2B旭日图——这货真的长得像个旭日啊щ(゚Д゚щ):可能大家印象中的旭日图就只能做到上面“普通旭日图”的样子了,很难想象这么有设计感的作品,居然可以是通过配置项写出来的吧?(羡婆卖瓜~)因为这可是ECharts家的旭日图呀!除了颜值之外,我们还提供了丰富的功能使得旭…

    2022年9月26日
    0
  • Word在试图打开文件时遇到错误。解决办法!

    Word在试图打开文件时遇到错误。解决办法!下载Word文档,看看“软考网络工程师”的试题!但是文档打不开,显示如图二图一图二解决步骤:看到这报错,第一感觉,是不是OFFICE本身的问题?除了这个下载的文档不能打开,其它的WORD文档一般都能用WORD打开!晕死。。。先在微软官方网站下载Office2003SP3-KB923618-FullFile-CHS.exe,修复一下O…

    2022年5月1日
    56
  • R语言基于Bootstrap方法计算标准误差(std. error)实战

    R语言基于Bootstrap方法计算标准误差(std. error)实战R语言基于Bootstrap方法计算标准误差(std.error)实战目录R语言基于Bootstrap方法计算标准误差实战#Bootstrapping计算标准误的流程#使用boot包计算向量的标准误差#手动编写实现Bootstrapping计算标准误差#Bootstrapping计算标准误的流程Bootstrapping是一种可以用来估计均值标准误差的方法。Bootstrapping计算标准误差的基本过程如下:1,从给定的数据集中抽取k个又放回抽样的样.

    2022年10月21日
    0
  • 新安装idea,需要设置好的几个地方。

    设置编码格式。 设置maven。 如果不设置,那之前下载的jar包还得重新下载。 设置快捷键。 我使用eclipse的快捷键。 设置主题。 设置字体。 设置JDK. 未完待续。。。。。。

    2022年3月13日
    68
  • pcanywhere的端口「建议收藏」

    pcanywhere的端口「建议收藏」PCANYWHERE使用端口TCP:5631,UDP:5632通常打开第一个端口就可以了

    2022年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号