В JavaScript вы можете использовать оператор ++
перед (преинкремент) или после имени переменной (постинкремент). В чем, если таковые имеются, различия между этими способами приращения переменной?
#ИМЯ?
Ответ 1
То же, что и на других языках:
-
++x
(pre-increment) означает "приращение переменной, значение выражения - окончательное значение" -
x++
(post-increment) означает "запомнить исходное значение, а затем увеличивать переменную, значение выражения - это исходное значение"
Теперь, когда они используются как автономные операторы, они означают одно и то же:
x++;
++x;
Разница возникает, когда вы используете значение выражения в другом месте. Например:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
Ответ 2
-
++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++
, где вы читаете значение, оцениваете его, изменяете его и сохраняете.
Ответ 3
Как я понимаю, если вы используете их автономно, они делают то же самое. Если вы попытаетесь вывести результат из них как выражение, то они могут отличаться. Попробуйте alert (i ++) по сравнению с alert (++ i), чтобы увидеть разницу. я ++ оценивает значение я перед добавлением, а ++ добавляет перед оценкой.
См. http://jsfiddle.net/xaDC4/ для примера.
Ответ 4
Я думал об этом вчера, читая этот ответ на вопрос о плохих предположениях на C/С++, Во всех случаях, можем ли мы гарантировать, что Javascript ведет себя таким образом? Или вы считаете, что плохой практикой использовать инструкцию increment в более сложном выражении?
Ответ 5
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
Ответ 6
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