后,我正在寻找一个理由,为什么增量运营商并不在我设置innerHTML值,如下面的地方增加的数值:后递增操作不增加变量,直到评价
<div id="php"></div>
var a = 14;
document.getElementById("php").innerHTML = a++;//the result will be 14 instead of 15
后,我正在寻找一个理由,为什么增量运营商并不在我设置innerHTML值,如下面的地方增加的数值:后递增操作不增加变量,直到评价
<div id="php"></div>
var a = 14;
document.getElementById("php").innerHTML = a++;//the result will be 14 instead of 15
它确实增加了变量,但它写入的innerHTML然后递增值,你可以使用++a
,这将增加该值将其写入的innerHTML之前。
var a = 14
var b = 14
console.log('before a', a)
document.getElementById("test1").innerHTML = a++
console.log('after a', a)
console.log('before b', b)
document.getElementById("test2").innerHTML = ++b
console.log('after b', b)
<div id="test1"></div>
<div id="test2"></div>
而不是使用a++
你可以做++a
变量值分配之前得到增量:
var a = 14;
document.getElementById("php").innerHTML = ++a;
<div id="php"></div>
但是如果我使用alert(a ++),它将工作正常,并且警报将具有新增值 – mina
因为您使用的是后缀increment operatorvariable++
,这意味着您首先获取值,然后增加该变量。
当您使用前缀增量运算符++variable
时,变量会先递增,然后返回该值。
var a = 42;
console.log(a++); // shows 42, value is 43
console.log(a); // 43
console.log(++a); // 44
console.log(a); // 44
虽然我个人使用的增量运算符,这是可以的,因为我知道我在做什么,我觉得这很好,在这个问题的建议,此标记为重复值得一看,这是为了避免你遇到的一种混淆,包括将增量语句全部放在单独的行中,或者改写'a + = 1'。尽管拒绝阅读任何文档的纯粹主义者可能会反对,但这[文档](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment_())非常清晰。 – 2016-12-03 18:02:32
(续)它说,*增量操作符递增(加1)其操作数并返回一个值。如果使用了postfix,在操作数之后加上运算符(例如'x ++'),那么它会在**递增前返回** ** – 2016-12-03 18:06:45
@torazaburo:那么为什么alert(a ++)工作正常,并且在innerHTML中返回值然后递增它! 。 – mina