JavaScript——回调函数 + 函数自调用

一、回调函数

1.回调函数:其实就是将一个函数作为参数传递到另一个函数中,当另一个函数执行后,再执行当作参数传入的那个函数,被当作参数的那个函数就是回调函数。

            function fn(a,b,fm) {
				var sum = a+b
				return fm(sum)
			}
			function fm(n) {
				var pow = n*n
				console.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)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_小张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值