为了账号安全,请及时绑定邮箱和手机立即绑定

闭包修改局部变量后返回局部变量仍是原始值

闭包修改局部变量后返回局部变量仍是原始值

慕娘9325324 2018-10-12 18:17:17
function test() {    var n=1;    var add = function () {        n++;        console.log(n);    };    return{n:n,add:add};}var t1=test();var t2=test();t1.add();//输出2t1.add();//输出3var b = t1.n;这里的b为什么还是1?
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

应该这样写:

function test() {    var n=1;    var add = function () {
        n++;        console.log(n);
    };    return {
        getN(){return n;},add:add
    }
}

你之前的写法应该是类似这样的:

function test() {    var n=1;    var add = function () {
        n++;        console.log(n);
    };    var m = n;    return {        n:m, //这里只是n的值
        add:add
    };
}


查看完整回答
反对 回复 2018-11-09
  • 1 回答
  • 0 关注
  • 468 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信