перед ( предварительным приращением ) или после имени переменной ( после приращения ). В чем, если таковые имеются, различия между этими способами приращения переменной? То же, что и в других языках:

(перед инкрементом) означает «увеличить переменную ;, значение выражения является окончательным значением»

  • x (после приращения) означает «запомнить оригинал value, затем увеличьте переменную ; значение выражения является исходным значением «
  • x Теперь при использовании в качестве автономного выражения они означают одно и то же:

Разница возникает, когда вы используете значение выражение в другом месте. Например:

x  ;
  x;

увеличивает значение, затем оценивает и сохраняет его.

x = 0;
y = array[x  ]; // This will get array[0]

x = 0;
y = array[  x]; // This will get array[1]
  • x Обратите внимание, что использование
  • x , оценивает значение, затем увеличивает его и сохраняет.
var n = 0, m = 0;

alert(n  ); /* Shows 0, then stores n = 1 */
alert(  m); /* Shows 1, then stores m = 1 */

, где это возможно, дает небольшие преимущества в плане производительности, поскольку вы читаете переменную, изменяете ее, затем оцениваете и сохраняете. По сравнению с оператором x, где вы читаете значение, оцениваете его, изменяете и сохраняете.x , где вы читаете значение, оцениваете его, изменяете его, затем сохраняете Это.

Как я понимаю, если вы используете их автономно, они делают то же самое. Если вы попытаетесь вывести их результат в виде выражения, они могут отличаться. Попробуйте оповещение (i) по сравнению с оповещением (i), чтобы увидеть разницу. я оцениваю меня перед сложением и делаю сложение перед оценкой.

, поэтому ваш код будет работать только после загрузки окна, когда все ресурсы имеют был загружен. В этот момент jQuery ( http://jsfiddle.net/xaDC4/ для примера.

Я думал об этом вчера, читая этот ответ на вопрос о неверных предположениях в C / C . Во всех случаях, можем ли мы гарантировать, что Javascript ведет себя таким образом? Или вы считаете плохой практикой использовать оператор приращения внутри более сложного оператора вообще?

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

jsfiddle