一道关于闭包的题目(在小红书刷到的)

这篇博客探讨了JavaScript中的闭包和递归函数。通过一个具体的代码示例,展示了如何创建一个返回内部函数的函数,该内部函数在每次调用时保持对外部变量的引用,即使外部函数已经执行完毕。博主详细解释了为何`a.fun(m)`始终返回1,即使传入不同的参数,这是因为闭包保存了第一次调用时的n值。这个例子深入解析了JavaScript中的作用域和闭包特性。
摘要由CSDN通过智能技术生成

在这里插入图片描述

//问:以下代码的输出是怎么样的?
function fun(n,e){
    console.log(e)
    return{
        fun:function(m){
            return fun(m,n)
        }
    }
}
var a=fun(1);//undefined
//原因:这时e没有传参,所以打印了undefined
// a代表的是
// {
//     fun:function(m){
//         return fun(m,1)   //这里的1即代表了fun(n,e)中的e,所以不管后面a.fun(m)传任何参数,打印的都是1
//     }
// }

a.fun(1);//1
/*可以解析为执行了
function(1){
  return fun(1,1)
}
fun(1,1),会打印出1
所以console.log 1*/

a.fun(2);//1
//可以解析为执行了function(2){
//   return fun(2,1)
// }
//fun(2,1),会打印出1
//所以console.log 1

a.fun(3);//1
//可以解析为执行了function(1){
//   return fun(3,1)
// }
//fun(3,1),会打印出1
//所以console.log 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值