为什么JavaScript中的这个值为3?

Jeh*_*yun 1 javascript post-increment

我认为下面的代码应该显示4,为什么它产生3?

function arithFunc() {
    var n = 0;
    return {
        plusOP: function() {
            return n++;
        },
        minusOP: function() {
            return n--;
        }

    };
}

var aTest = arithFunc(),
    bTest = arithFunc();

document.getElementById("demo").innerHTML = aTest.plusOP();
document.getElementById("demo").innerHTML = aTest.plusOP();
document.getElementById("demo").innerHTML = bTest.minusOP();
document.getElementById("demo").innerHTML = aTest.plusOP();
document.getElementById("demo").innerHTML = bTest.minusOP();
document.getElementById("demo").innerHTML = aTest.plusOP();
Run Code Online (Sandbox Code Playgroud)
<p id="demo"></p>
Run Code Online (Sandbox Code Playgroud)

sbk*_*ing 5

您正在使用postfix递增和递减运算符.这些是在返回值后计算的.例如:

var n = 0;
console.log(n++); // 0
console.log(n); // 1
Run Code Online (Sandbox Code Playgroud)

尝试使用前缀运算符:

var n = 0;
console.log(++n); // 1
console.log(n); // 1
Run Code Online (Sandbox Code Playgroud)

您的代码将如下所示:

function arithFunc() {
    var n = 0;
    return {
        plusOP: function() {
            return ++n;
        },
        minusOP: function() {
            return --n;
        }

    };
}
Run Code Online (Sandbox Code Playgroud)