W JavaScript możesz użyć ++
operatora przed ( preinkrementacja ) lub po nazwie zmiennej ( post-inkrementacja ). Jakie są różnice między tymi sposobami inkrementacji zmiennej?
W JavaScript możesz użyć ++
operatora przed ( preinkrementacja ) lub po nazwie zmiennej ( post-inkrementacja ). Jakie są różnice między tymi sposobami inkrementacji zmiennej?
Odpowiedzi:
Tak samo jak w innych językach:
++x
(pre-inkrementacja) oznacza „inkrementuj zmienną; wartością wyrażenia jest wartość końcowa”x++
(post-inkrementacja) oznacza „zapamiętaj oryginalną wartość, a następnie zwiększ zmienną; wartością wyrażenia jest oryginalna wartość”Teraz, gdy są używane jako samodzielna instrukcja, oznaczają to samo:
x++;
++x;
Różnica pojawia się, gdy użyjesz wartości wyrażenia w innym miejscu. Na przykład:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1
zamiast ++
? Czy istnieje sposób na zwiększenie wartości przed lub po dodawaniu liczb?
x
zaczyna się od 10, wartość r1
wynosi 21, czyli 10 + 11. Wartość pierwszej x++
ekspresji wynosi 10 i x
zwiększa się do 11 wartości w drugiej x++
ekspresji wynosi 11 i x
zwiększa się do 12
++x
zwiększa wartość, a następnie ocenia ją i zapisuje.x++
ocenia wartość, a następnie ją zwiększa i zapisuje.var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Zauważ, że używanie ++x
tam, gdzie to możliwe, przynosi niewielkie korzyści w zakresie wydajności , ponieważ odczytujesz zmienną, modyfikujesz ją, a następnie oceniasz i zapisujesz. W przeciwieństwie do x++
operatora, w którym odczytujesz wartość, oceniasz ją, modyfikujesz, a następnie zapisujesz.
Jak rozumiem, jeśli używasz ich samodzielnie, robią to samo. Jeśli spróbujesz wypisać ich wynik jako wyrażenie, mogą się one różnić. Wypróbuj alert (i ++) w porównaniu z alertem (++ i), aby zobaczyć różnicę. i ++ oblicza wartość i przed dodaniem, a ++ i wykonuje dodanie przed oceną.
Zobacz przykład http://jsfiddle.net/xaDC4/ .
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
Mam wyjaśnienie zrozumienia post-inkrementacji i preinkrementacji. Więc umieszczam to tutaj.
Pozwala przypisać 0
dox
let x = 0;
Zacznijmy od post-inkrementacji
console.log(x++); // Outputs 0
Czemu?
Przełammy x++
wyrażenie
x = x;
x = x + 1;
Pierwsza instrukcja zwraca wartość, x
której jest0
A później, gdy użyjesz x
zmiennej w dowolnym miejscu, wykonywana jest druga instrukcja
Druga instrukcja zwraca wartość tego x + 1
wyrażenia, którą jest(0 + 1) = 1
Należy pamiętać o wartości x
w tym stanie1
Teraz zacznijmy od preinkrementacji
console.log(++x); // Outputs 2
Czemu?
Przełammy ++x
wyrażenie
x = x + 1;
x = x;
Pierwsza instrukcja zwraca wartość tego x + 1
wyrażenia, którą jest(1 + 1) = 2
Druga instrukcja zwraca wartość, x
która jest 2
tak x = 2
więc zwraca2
Mam nadzieję, że to pomoże ci zrozumieć, czym są post-inkrementacja i preinkrementacja!