Javascript 函数进阶 ——【回调函数、递归函数、闭包函数、作用域和域解析】


高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。
函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用。 最典型的就是作为回调函数。
同理函数也可以作为返回值传递回来

一、回调函数

回调函数:指的就是一个函数A作为参数传递给一个函数B,然后在B的函数体内调用函数A。此时,称函数A为回调函数。

例:

function cal(num1, num2, fn) {
   
  return fn(num1, num2);
}
console.log(cal(45, 55, function (a, b) {
   
  return a + b;
}));
//function(a,b)作为参数作为参数传递给一个cal() ,然后在cal()的函数体内调用function(a,b)。
//此时,称function(a,b)为回调函数。
//调用cal()函数,首先将num1 = 45,num2 = 55,function(a,b)的返回值是a+b,,
//cal的返回值是fn(44,45),即就是将fn的num1和num2调用到function(a,b)的a和b中,最后返回a+b=100
console.log(cal(10, 20, function (a, b) {
   
  return a * b;
}));
//打印200

二、递归函数

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数。
递归函数的作用和循环效果一样。
由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件 return。

 <script>
        var num = 1;
        function fn() {
   
            console.log('我要打印6句话');

            if (num == 6) {
   
                return; // 递归里面必须加退出条件
            }
            num++;
            fn();
        }
        fn();
</script>

根据用户的输入计算指定数据的阶乘:

 function factorial(n) {
   	// 定义回调函数
            if (n == 1) {
   
                return 1; // 递归出 
            }
            return n * factorial(n - 1);
        }
        var n = prompt(
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值