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]
+ 1vez de ++? Existe uma maneira de incrementar antes ou depois ao adicionar números?
xcomeça com 10, o valor de r121 é 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 ++xque 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 0ax
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 xque é0
E mais tarde, quando você usa a xvariável em qualquer lugar, a segunda instrução é executada
A segunda declaração retorna o valor dessa x + 1expressão que é(0 + 1) = 1
Lembre-se do valor xnesse estado que é1
Agora vamos começar com o pré-incremento
console.log(++x); // Outputs 2
Por quê?
Vamos quebrar a ++xexpressão
x = x + 1;
x = x;
A primeira instrução retorna o valor dessa x + 1expressão que é(1 + 1) = 2
Segunda declaração retorna o valor de xque é 2assim, x = 2portanto, retorna2
Espero que isso ajude você a entender o que são pós-incremento e pré-incremento!