Trong JavaScript, bạn có thể sử dụng ++
toán tử trước ( tăng trước ) hoặc sau tên biến ( tăng sau ). Điều gì, nếu có, là sự khác biệt giữa các cách tăng một biến?
Trong JavaScript, bạn có thể sử dụng ++
toán tử trước ( tăng trước ) hoặc sau tên biến ( tăng sau ). Điều gì, nếu có, là sự khác biệt giữa các cách tăng một biến?
Câu trả lời:
Tương tự như trong các ngôn ngữ khác:
++x
(tăng trước) có nghĩa là "tăng biến; giá trị của biểu thức là giá trị cuối cùng"x++
(tăng sau) có nghĩa là "nhớ giá trị ban đầu, sau đó tăng biến; giá trị của biểu thức là giá trị ban đầu"Bây giờ khi được sử dụng như một tuyên bố độc lập, chúng có nghĩa tương tự:
x++;
++x;
Sự khác biệt đến khi bạn sử dụng giá trị của biểu thức ở nơi khác. Ví dụ:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1
thay vì ++
? Có cách nào để tăng trước hay sau khi thêm số không?
x
bắt đầu là 10, giá trị r1
là 21, là 10 + 11. Giá trị của x++
biểu thức thứ nhất là 10 và x
được tăng lên 11. Giá trị của x++
biểu thức thứ hai là 11 và x
được tăng lên 12.
++x
tăng giá trị, sau đó đánh giá và lưu trữ nó.x++
đánh giá giá trị, sau đó tăng và lưu trữ nó.var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Lưu ý rằng có những lợi ích hiệu suất nhỏ khi sử dụng ++x
khi có thể, bởi vì bạn đọc biến, sửa đổi nó, sau đó đánh giá và lưu trữ nó. So với x++
toán tử nơi bạn đọc giá trị, đánh giá nó, sửa đổi nó, sau đó lưu trữ nó.
Theo tôi hiểu nếu bạn sử dụng chúng độc lập thì họ cũng làm điều tương tự. Nếu bạn cố gắng đưa ra kết quả của chúng dưới dạng một biểu thức thì chúng có thể khác nhau. Hãy thử cảnh báo (i ++) so với cảnh báo (++ i) để thấy sự khác biệt. i ++ đánh giá i trước khi bổ sung và ++ tôi thực hiện bổ sung trước khi đánh giá.
Xem http://jsfiddle.net/xaDC4/ để biết ví dụ.
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
Tôi có một lời giải thích về việc hiểu tăng sau và tăng trước. Vì vậy, tôi đang đặt nó ở đây.
Cho phép gán 0
chox
let x = 0;
Hãy bắt đầu với tăng sau
console.log(x++); // Outputs 0
Tại sao?
Hãy phá vỡ x++
biểu thức
x = x;
x = x + 1;
Câu lệnh đầu tiên trả về giá trị của x
nó là0
Và sau này khi bạn sử dụng x
biến ở bất cứ đâu, thì câu lệnh thứ hai được thực thi
Câu lệnh thứ hai trả về giá trị của x + 1
biểu thức này(0 + 1) = 1
Hãy ghi nhớ giá trị của x
trạng thái này1
Bây giờ hãy bắt đầu với tăng trước
console.log(++x); // Outputs 2
Tại sao?
Hãy phá vỡ ++x
biểu thức
x = x + 1;
x = x;
Câu lệnh đầu tiên trả về giá trị của x + 1
biểu thức này(1 + 1) = 2
Câu lệnh thứ hai trả về giá trị của x
nó là 2
do x = 2
đó nó trả về2
Hy vọng điều này sẽ giúp bạn hiểu thế nào là tăng sau và tăng trước!