Khái niệm:
- Trong TypeScript (cũng như trong nhiều ngôn ngữ lập trình khác như C, C++, Java, v.v.),
i++
và++i
là các toán tử một ngôi (increment operators) được sử dụng để tăng giá trị của biến i lên 1 đơn vị - Tuy nhiên tùy vào vị trí đặt toán tử
++
sẽ có những hiệu quả khác nhau
1. ++i
: (pre-increment: tăng trước) => Giá trị của i
được tăng lên trước, sau đó i
mới được sử dụng
VD:
let i = 5; console.log(++i); // i lúc này được tăng lên 6 trước, sau đó mới trả về kết quả console là 6
console.log(i); // Lúc này console i vẫn bằng 6
2. i++
: (post-increment: tăng sau) => Giá trị của i
được sử dụng trước, sau đó i
mới được tăng lên 1
VD:
let i = 5; console.log(i++); // Kết quả trả về là 5 , sau đó i mới được tăng lên 6
console.log(i); // Lúc này console ra i mới bằng 6
i++
và ++i
được sử dụng khi nào?
1. Trong vòng lặp: Thông thường, trong các vòng lặp for, việc tăng biến đếm thường dùng i++
vì chúng ta quan tâm đến việc thực hiện hành động rồi mới tăng giá trị của biến.
VD:
for (let i = 0; i < 10; i++) {
console.log(i); // In ra các giá trị từ 0 đến 9
}
2. Trong các biểu thức tính toán
Khi cần sử dụng giá trị hiện tại của biến trước rồi mới tăng giá trị của nó, sử dụng i++
VD:
let i = 5;
let result = i++ + 10; // result sẽ là 15, sau đó i sẽ là 6
console.log(result); // In ra 15
console.log(i); // In ra 6
Khi cần tăng giá trị của biến trong biểu thức trước rồi mới đưa vào sử dụng
VD:
let i = 5;
let result = ++i + 10; // i tăng lên 6, result sẽ là 16
console.log(result); // In ra 16
console.log(i); // In ra 6
3. Trong các cấu trúc điều kiện
VD:
let i = 0;
while (i < 5) {
console.log(i++); // i bắt đầu chạy từ 0, sau đó lần lượt tăng lên 1
đơn vị -> khi i tăng lên = 5 > không thỏa mãn điều
kiện i < 5 -> Kết thúc
// Kết quả in ra từ 0 đến 4
}
let j = 0;
while (j < 5) {
console.log(++j); // j bắt đầu chạy từ 0, nhưng được tăng lên 1 đơn vị
trước khi được in ra > lúc này i = 1 -> Tiếp tục
tăng thêm 1 đơn vị
// Kết quả in ra từ 1 đến 5
}
4. Khi truyền đối số vào các hàm
Khi cần truyền giá trị hiện tại trước khi tăng, dùng i++. Nếu cần giá trị tăng trước khi truyền, dùng ++i
.
VD:
function printValue(value: number) {
console.log(value);
}
let i = 2;
printValue(i++); // In ra 2, sau đó i tăng lên 3
printValue(++i); // i đang bằng 3 > i tăng lên 4, rồi in ra 4
Ghi chú
- Các toán tử một ngôi có dễ dễ gây hiểu nhầm và khó hiểu, bạn chỉ nên sử dụng khi thật sự cần thiết
Trả lời