In Javascript è possibile utilizzare l'operatore ++
prima o dopo il nome della variabile. Quali sono le differenze tra questi modi di incrementare una variabile?++ some Varianble vs. someVariable ++ in Javascript
risposta
Uguale in altre lingue:
++x
(pre-incremento) significa "incrementare la variabile, il valore dell'espressione è il valore finale"x++
(post-incremento) significa "il ricordo il valore originale, quindi incrementare la variabile, il valore dell'espressione è il valore originale"
Ora, quando viene utilizzato come una dichiarazione standalone, che significano la stessa cosa:
x++;
++x;
La differenza viene quando si utilizza il valore dell'espressione altrove. Per esempio:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
Maledizioni , Ti ho quasi picchiato a una risposta se non avessi smesso di caricare una risposta pratica di jsfiddle. ;-) – Chris
Che aspetto avrebbe questo se usassi '+ 1' invece di' ++ '? C'è un modo per aumentare prima o dopo l'aggiunta di numeri? – Keavon
Vorrei sapere perché se si esegue questa operazione const r1 = (x ++) + (x ++); non produce il risultato atteso secondo il tuo esempio. –
Mi pare di capire se li si utilizza standalone che fanno la stessa cosa. Se provi a generare il risultato di essi come espressione, possono differire. Prova alert (i ++) rispetto all'avviso (++ i) per vedere la differenza. i ++ valuta i prima dell'aggiunta e ++ i fa l'aggiunta prima di valutare.
Vedere http://jsfiddle.net/xaDC4/ per un esempio.
++x
incrementa il valore, quindi lo valuta e lo memorizza.x++
valuta il valore, quindi lo incrementa e lo memorizza.
var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Nota che ci sono lievi vantaggi prestazionali di utilizzare ++x
, ove possibile, a causa di leggere la variabile, modificarlo, quindi valutare e conservarla. Contro l'operatore x++
in cui leggi il valore, lo valuti, lo modifichi, quindi lo memorizzi.
stavo pensando a questo ieri leggendo this response alla domanda su bad assumptions in C/C++. In tutti i casi, possiamo garantire che Javascript si comporti in questo modo? O pensi che sia una cattiva pratica usare la dichiarazione di incremento in un'istruzione più complessa?
Guardando all'ECMA-262, sembra ragionevolmente ben specificato. –
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
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
- 1. Lisp's "some" in Python?
- 2. Scala Some v. Opzione
- 3. PHP: cosa fa __ ('Some text')?
- 4. valueOf() vs. toString() in Javascript
- 5. Operatore '&&' in Javascript vs in Java
- 6. Apache Spark: gestione di Option/Some/None in RDD
- 7. UrlEncode - Javascript vs. C#
- 8. javascript, funzioni vs variabili
- 9. javascript function vs. (function() {...}());
- 10. Javascript querySelector vs. getElementById
- 11. vanilla javascript vs jquery
- 12. Javascript VS C#
- 13. JavaScript: Constructor vs Prototype
- 14. javascript nome vs ID
- 15. oggetti javascript vs matrici vs JSON
- 16. javascript var vs questo
- 17. JavaScript window.scroll vs. window.scrollTo?
- 18. Backbone.Wreqr vs JavaScript Object
- 19. Javascript: String vs. Object
- 20. Cookies - PHP vs Javascript
- 21. JavaScript: test vs exec
- 22. Quando dovresti usare === vs ==,! == vs! =, Ecc. In javascript?
- 23. var vs this in oggetto Javascript
- 24. doppie virgolette vs apici in JavaScript
- 25. dinamica vs prestazioni Inline RegExp in JavaScript
- 26. una riga se vs && in JavaScript
- 27. Data vs nuovo Data in JavaScript
- 28. Rileva touchpad vs mouse in Javascript
- 29. jQuery .on(); vs JavaScript .addEventListener();
- 30. Moduli MVC vs moduli Javascript
Vedi anche la lingua-agnostic [Differenza tra i ++ e ++ i in un ciclo?] (Http://stackoverflow.com/q/484462/1048572) – Bergi