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

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();//输出2

t1.add();//输出3

var b = t1.n;

这里的b为什么还是1?

慕娘9325324
浏览 469回答 1
1回答

侃侃尔雅

应该这样写: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     }; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript