JavaScript——回调函数 + 函数自调用
一、回调函数
1.回调函数:其实就是将一个函数作为参数传递到另一个函数中,当另一个函数执行后,再执行当作参数传入的那个函数,被当作参数的那个函数就是回调函数。
function fn(a,b,fm) {var sum = a+breturn fm(sum)}function fm(n) {var pow = n*nconsole.log(pow)}fn(2,3,fm)
分析:先是fn(2,3,fm)调用fn函数,传入2,3,fm三个参数,并且fm参数是外边定义的函数,再运算将2+3的值赋值给sum变量,即sum=5;然后返回fm(sum),也就是将5作为参数再传入fm函数,然后执行n*n将结果赋值给pow变量,并打印。
总的说就是将一个函数也作为参数传入到另一个函数中,待其执行完毕后再执行传入的函数。
2.笔试题
function sum() {if(arguments.length == 2) {return arguments[0] + arguments[1]}else if(arguments.length == 1) {var first = arguments[0]return function(second) {return first + second}}}console.log(sum(2,3)) console.log(sum(2)(3))
分析:首先第一次sum(2,3)调用函数是传入的两个参数,满足实参个数等于2的条件,因此直接返回了arguments[0] + arguments[1]的值,也就是2+3的值,也就是5,所以第一次打印结果为5.
第二次sum(2)(3)调用时,要先分开,先是sum(2)调用sum函数,它不满足实参个数等于2,但是满足了实参个数等于1,所以变量first就等于了传入的参数2;然后函数返回了另一个函数,也就是sum(2)的结果为function(second)函数,因此sum(2)(3)其实就相当于function(3)调用函数;然后返回first+second的值,但是此函数中没有first,于是到它的上一层函数中找(这里需要注意的是函数运行是在函数生成和定义的地方运行的,要找对作用域),first=2;所以first+second=5,打印结果为5.
二、函数自调用:
1、自调用函数是一次性函数,是指在函数声明的同时调用,页面加载完毕,函数也执行完毕。
2.函数自调用的作用:开启一个新的作用域,避免命名冲突。
3.函数自调用的方法:
1.使用()实现自调用
(function(n) {if(n<=1){console.log(1)}else{console.log(n)}})(10)
2.使用 !实现自调用
!function(n) {if(n<=1){console.log(1)}else{console.log(n)}}(10)
3.使用 + 实现自调用
+function(n) {if(n<=1){console.log(1)}else{console.log(n)}}(10)
4.使用 - 实现自调用
-function(n) {if(n<=1){console.log(1)}else{console.log(n)}}(10)
JavaScript——回调函数 + 函数自调用相关推荐
- javascript回调函数笔记
来源于:https://github.com/useaname/blog-study 在Javascript中,函数是第一类对象.意味函数可以像对象一样按照第一类被管理使用. 回调函数是从一个叫函数式 ...
- 理解javascript 回调函数
理解javascript 回调函数 原文:理解javascript 回调函数 ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一 ...
- javascript回调函数(模式)原理和示例深入分析
广大网友读懂了我之前论述的javasc ...
- 重新理解javascript回调函数
把函数作为参数传入到另一个函数中.这个函数就是所谓的回调函数 经常遇到这样一种情况,某个项目的A层和B层是由不同的人员协同完成.A层负责功能funA,B层负责funcB.当B层要用到某个模块的数据,于 ...
- 高级JavaScript Day03 | 函数定义和调用、this、严格模式、高阶函数、闭包、递归
1.函数的定义和调用 1.1 函数的定义方式 1.函数的声明方式 function关键字 (命名函数) // 1. 自定义函数(命名函数)function fn() {}; 2.函数表达式 (匿名函数 ...
- 理解javascript 回调函数,闭包
回调 jQuery中一直有使用回调函数,比如:$("#btn").click(function() {alert("button clicked"); }); ...
- javascript 回调函数
javascript 回调函数 回调函数 作为参数传递的函数 示例代码 let x = function () {console.log("执行回调函数") }let y = fu ...
- C#代码与javaScript函数的相互调用
C#代码与javaScript函数的相互调用 问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4 ...
- JavaScript函数的各种调用模式
函数是JavaScript世界里的第一公民,换句话来说,就是我们如果可以精通JavaScript函数的使用,那么对JavaScript的运用可以更游刃有余了.熟悉JavaScript的人应该都知道,同 ...
- C#与Javascript变量、函数之间的相互调用2008年11月28日 星期五 05:28 P.M.1.如何在JavaScript访问C#函数?
C#与Javascript变量.函数之间的相互调用 2008年11月28日 星期五 05:28 P.M. 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3 ...
最新文章
- 网络营销外包——网站搜索框设计不同人群网络营销外包有不同设计
- ntu part-time phd 信息整理
- opera在我的博客发不了帖子,郁闷
- java编程有什么独特之处?
- arcpy实现空间查询_「实战系列」GP+Roaringbitmap,亿级会员十万级标签毫秒级查询...
- ecshop 模板标签
- 细数微软 Teams 的 14 宗“罪”!
- 红帽linux企业版6的进程,红帽企业版 Linux 6 设备映射多路径
- Scikit-Learn (浅谈PCA降维算法)
- 《近世代数》课程感想
- Nao机器人语音对话
- opencv马赛克python实现
- 中国各省的简称及省会
- 【壁纸】动漫绝美壁纸
- 知乎上的100条简短深刻的回答
- OpenGl法向量计算
- java遍历mysql数据库_java mysql 遍历
- 块交织器5×5 verilog设计及仿真实现
- P3084 照片 [差分约束]
- SAP甲方历程回顾-01 2017年转到甲方的故事~从乙方离职
热门文章
- 新生儿黄疸高怎么办?
- 走出3个新生儿喂养误区,新手爸妈变高手
- 数据库添加外键报1061错误
- 计算机灰尘过多影响,电脑主机灰尘过多怎么解决 如何清理主机灰尘【详解】...
- JS面试八股文知识总结(最新)
- Python实现QQ PC端给好友发送消息
- [BZOJ1123]:[POI2008]BLO(塔尖)
- windows批处理 (cmd/bat) 编程详解
- iOS拍照后存储照片到相册中
- 计算机教育多元化,高校非计算机专业计算机教育多元化【计算机教育论文】