В JavaScript вы можете использовать ++
оператор перед ( преинкремент ) или после имени переменной ( постинкремент ). В чем, если таковые имеются, различия между этими способами приращения переменной?
В JavaScript вы можете использовать ++
оператор перед ( преинкремент ) или после имени переменной ( постинкремент ). В чем, если таковые имеются, различия между этими способами приращения переменной?
Ответы:
То же, что и на других языках:
++x
(предварительное увеличение) означает «увеличить переменную; значение выражения является окончательным значением»x++
(постинкремент) означает «запомнить исходное значение, затем увеличить значение переменной; значение выражения является исходным значением»Теперь, когда они используются как самостоятельное утверждение, они означают одно и то же:
x++;
++x;
Разница возникает, когда вы используете значение выражения в другом месте. Например:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1
вместо ++
? Есть ли способ увеличения до или после добавления чисел?
x
начинается с 10, значение r1
равно 21, что составляет 10 + 11. Значение первого x++
выражения равно 10 и x
увеличивается до 11. Значение второго x++
выражения равно 11 и x
увеличивается до 12.
++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++
оператором, в котором вы читаете значение, оцениваете его, изменяете и сохраняете.
Как я понимаю, если вы используете их автономно, они делают то же самое. Если вы попытаетесь вывести их результат в виде выражения, они могут отличаться. Попробуйте alert (i ++) по сравнению с alert (++ i), чтобы увидеть разницу. i ++ оценивает i перед сложением, а ++ i добавляет перед оценкой.
См. Http://jsfiddle.net/xaDC4/ для примера.
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
У меня есть объяснение понимания пост-инкремента и пре-инкремента. Так что я выкладываю это здесь.
Позволяет присвойте 0
Tox
let x = 0;
Начнем с постинкремента
console.log(x++); // Outputs 0
Зачем?
Давайте разберем x++
выражение
x = x;
x = x + 1;
Первое утверждение возвращает значение x
которого0
И позже, когда вы используете x
переменную в любом месте, то выполняется второй оператор
Второе утверждение возвращает значение этого x + 1
выражения, которое(0 + 1) = 1
Имейте в виду значение x
в этом состоянии, которое1
Теперь давайте начнем с предварительного увеличения
console.log(++x); // Outputs 2
Зачем?
Давайте разберем ++x
выражение
x = x + 1;
x = x;
Первый оператор возвращает значение этого x + 1
выражения, которое(1 + 1) = 2
Второе утверждение возвращает значение x
которого, 2
таким x = 2
образом, оно возвращает2
Надеюсь, это поможет вам понять, что такое постинкремент и преинкремент!