CNode

JS实现闭包的困惑请教

问答
Cchen110xi发布于10 年前最后回复10 年前1 回复3462 浏览0 收藏
    function test21() {
        WriteLog("=====================================");
        var objAddPkg = new AddPkgErr();
        WriteLog("閉包單組21,每次都是新的:" + objAddPkg.Add());
    }
    function test22() {
        WriteLog("=====================================");
        var objAddPkg = new AddPkgOK();
        WriteLog("閉包單組22,會累加:" + objAddPkg.Add());
    }
    function test3() {
        WriteLog("=====================================");
        WriteLog("閉包多組,每組都是新的並且組與組之間互不影響(錯誤結果)");
        var objAddPkg1 = new AddPkgErr();
        WriteLog("第一組,第一次:" + objAddPkg1.Add());
        WriteLog("第一組,第二次:" + objAddPkg1.Add());
        WriteLog("第一組,第三次:" + objAddPkg1.Add());
        WriteLog("=====================================");
        var objAddPkg2 = new AddPkgErr();
        WriteLog("第二組,第一次:" + objAddPkg2.Add());
        WriteLog("第二組,第二次:" + objAddPkg2.Add());
        WriteLog("第二組,第三次:" + objAddPkg2.Add());
        WriteLog("=====================================");
        WriteLog("第一組,第四次:" + objAddPkg1.Add());
        WriteLog("第二組,第四次:" + objAddPkg2.Add());
    }
    function test4() {
        WriteLog("=====================================");
        WriteLog("閉包多組,每組都是新的並且組與組之間互不影響(預期結果)");
        var objAddPkg1 = new AddPkgOK();
        WriteLog("第一組,第一次:" + objAddPkg1.Add());
        WriteLog("第一組,第二次:" + objAddPkg1.Add());
        WriteLog("=====================================");
        var objAddPkg2 = new AddPkgOK();
        WriteLog("第二組,第一次:" + objAddPkg2.Add());
        WriteLog("第二組,第二次:" + objAddPkg2.Add());
        WriteLog("=====================================");
        WriteLog("第一組,第三次:" + objAddPkg1.Add());
        WriteLog("第二組,第三次:" + objAddPkg2.Add());
    }

    function WriteLog(sMsg) {
        txtMsg.innerHTML = txtMsg.innerHTML + sMsg + "\n";
    }
</script>

上面的代码关于“閉包多組多次(錯誤結果)”和“閉包多組多次(預期結果)”,结果都不是我预期的,还请教一下大家,感恩! 预期的结果应该是:

閉包多組,每組都是新的並且組與組之間互不影響(預期結果) 第一組,第一次:0 第一組,第二次:1

第二組,第一次:0 第二組,第二次:1

第一組,第三次:2 第二組,第三次:3----->2(期望为2)

閉包多組,每組都是新的並且組與組之間互不影響(錯誤結果) 第一組,第一次:0 第一組,第二次:1 第一組,第三次:2

第二組,第一次:0 第二組,第二次:1 第二組,第三次:2

第一組,第四次:3 第二組,第四次:4----->3(期望为3)

查看回复

回复 (1)

C
chen110xi#1·10 年前

怎么凌乱成这个样子了,我放另外一个地方。 http://www.cnblogs.com/chen110xi/p/5811492.html

参与回复
登录后即可参与回复。登录