Học Playwright tiếng Việt, Cộng đồng Playwright cho người Việt

Lập trình cơ bản

Tìm hiểu về toán tử một ngôi – unary operator

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

Xem thêm: Tìm hiểu về toán tử một ngôi – unary operator

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