Em JavaScript, você pode usar o ++
operador antes ( pré-incremento ) ou após o nome da variável ( pós-incremento ). Quais são as diferenças entre essas formas de incrementar uma variável?
Em JavaScript, você pode usar o ++
operador antes ( pré-incremento ) ou após o nome da variável ( pós-incremento ). Quais são as diferenças entre essas formas de incrementar uma variável?
Respostas:
O mesmo que em outros idiomas:
++x
(pré-incremento) significa "incrementar a variável; o valor da expressão é o valor final"x++
(pós-incremento) significa "lembre-se do valor original e depois aumente a variável; o valor da expressão é o valor original"Agora, quando usado como uma declaração autônoma, eles significam a mesma coisa:
x++;
++x;
A diferença ocorre quando você usa o valor da expressão em outro lugar. Por exemplo:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1
vez de ++
? Existe uma maneira de incrementar antes ou depois ao adicionar números?
x
começa com 10, o valor de r1
21 é 10 + 11. O valor da primeira x++
expressão é 10 e x
é incrementado a 11. O valor da segunda x++
expressão é 11 e x
é incrementado a 12.
++x
incrementa o valor, avalia e armazena.x++
avalia o valor, depois incrementa e armazena.var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Observe que há pequenos benefícios de desempenho em usar sempre ++x
que possível, porque você lê a variável, modifica-a e depois avalia e armazena-a. Versus o x++
operador onde você lê o valor, avalia, modifica e armazena.
Pelo que entendi, se você usá-los autônomos, eles fazem a mesma coisa. Se você tentar gerar o resultado deles como uma expressão, eles poderão ser diferentes. Experimente o alerta (i ++) em comparação com o alerta (++ i) para ver a diferença. O i ++ avalia i antes da adição e ++ i faz a adição antes de avaliar.
Veja http://jsfiddle.net/xaDC4/ para um exemplo.
var a = 1;
var b = ++a;
alert('a:' + a + ';b:' + b); //a:2;b:2
var c = 1;
var d = c++;
alert('c:' + c + ';d:' + d); //c:2;d:1
var x = 0, y = 0;
//post-increment: i++ returns value then adds one to it
console.log('x++ will log: ', x++); //0
console.log('x after x++ : ', x); //1
//pre-increment: adds one to the value, then returns it
console.log('++y will log: ', ++y); //1
console.log('y after ++y : ', y); //1
Eu tenho uma explicação para entender pós-incremento e pré-incremento. Então, eu estou colocando aqui.
Permite atribuir 0
ax
let x = 0;
Vamos começar com pós-incremento
console.log(x++); // Outputs 0
Por quê?
Vamos quebrar a x++
expressão
x = x;
x = x + 1;
A primeira instrução retorna o valor x
que é0
E mais tarde, quando você usa a x
variável em qualquer lugar, a segunda instrução é executada
A segunda declaração retorna o valor dessa x + 1
expressão que é(0 + 1) = 1
Lembre-se do valor x
nesse estado que é1
Agora vamos começar com o pré-incremento
console.log(++x); // Outputs 2
Por quê?
Vamos quebrar a ++x
expressão
x = x + 1;
x = x;
A primeira instrução retorna o valor dessa x + 1
expressão que é(1 + 1) = 2
Segunda declaração retorna o valor de x
que é 2
assim, x = 2
portanto, retorna2
Espero que isso ajude você a entender o que são pós-incremento e pré-incremento!