不应该是每次返回的闭包都是n=0吗,++也应该在n=0基础上,输出应该是111啊

当有n++时候,返回值是123

function fun(n, b) {
    console.log(b) //und123
    return {
        fn1: function (m) {
            n++;
            return fun(m, n);
        }
    };
}
var a = fun(0)
a.fn1(1);  
a.fn1(2);    
a.fn1(3); 
function fun(n, b) {
    console.log(b) //und000
    return {
        fn1: function (m) {
            //n++;
            return fun(m, n);
        }
    };
}
var a = fun(0)
a.fn1(1);  
a.fn1(2);    
a.fn1(3); 
阅读 1.8k
2 个回答

a.fn1方法每次调用时都会修改a.fn1的作用域对象属性n的值。Chrome debugger看看:
image.png

image.png

image.png

image.png

n++那个函数的闭包是不是一直是在n=0的那个闭包上进行累加的,还是加了一次变成n=1之后,n=1又一次是闭包,在他的基础上加一

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题