为什么这个值在 JavaScript 中是 3?
Why is this value 3 in JavaScript?
我认为下面的代码应该显示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();
<p id="demo"></p>
你把事情搞得太复杂了:n++
计算出 n
的值,然后递增 n
。
aTest
和 bTest
拥有自己的 n
私有副本,因此所有这些 bTest.minusOP
调用与 p#demo
的最终内容无关只获取最后一个plusOP
.
返回的值
n
开始时为零。第一个 return n++
returns 0
并递增 n
到 1
。下一个 return n++
returns 1
并将其递增到 2
等等等等
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();
<p id="demo"></p>
您正在使用后缀递增和递减运算符。这些是在返回值后计算的。例如:
var n = 0;
console.log(n++); // 0
console.log(n); // 1
尝试改用前缀运算符:
var n = 0;
console.log(++n); // 1
console.log(n); // 1
您的代码将如下所示:
function arithFunc() {
var n = 0;
return {
plusOP: function() {
return ++n;
},
minusOP: function() {
return --n;
}
};
}
我认为下面的代码应该显示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();
<p id="demo"></p>
你把事情搞得太复杂了:n++
计算出 n
的值,然后递增 n
。
aTest
和 bTest
拥有自己的 n
私有副本,因此所有这些 bTest.minusOP
调用与 p#demo
的最终内容无关只获取最后一个plusOP
.
n
开始时为零。第一个 return n++
returns 0
并递增 n
到 1
。下一个 return n++
returns 1
并将其递增到 2
等等等等
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();
<p id="demo"></p>
您正在使用后缀递增和递减运算符。这些是在返回值后计算的。例如:
var n = 0;
console.log(n++); // 0
console.log(n); // 1
尝试改用前缀运算符:
var n = 0;
console.log(++n); // 1
console.log(n); // 1
您的代码将如下所示:
function arithFunc() {
var n = 0;
return {
plusOP: function() {
return ++n;
},
minusOP: function() {
return --n;
}
};
}