//问:以下代码的输出是怎么样的?
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
一道关于闭包的题目(在小红书刷到的)
于 2022-03-03 13:59:36 首次发布