Toán tử cộng ECMAScript

Trong nhiều ngôn ngữ lập trình, toán tử cộng (tức là dấu cộng hoặc trừ) thường là toán tử toán học đơn giản nhất.

Trong ECMAScript, toán tử cộng có rất nhiều hành vi đặc biệt.

Toán tử cộng

Toán tử cộng được biểu thị bằng dấu cộng (+):

var iResult = 1 + 2

Như với các toán tử nhân, trong việc xử lý các giá trị đặc biệt, phép cộng trong ECMAScript cũng có một số hành vi đặc biệt:

  • Nếu một số là NaN, thì kết quả là NaN.
  • -Infinity cộng với -Infinity, kết quả là -Infinity.
  • Infinity cộng với -Infinity, kết quả là NaN.
  • +0 cộng +0, kết quả là +0.
  • -0 cộng +0, kết quả là +0.
  • -0 cộng -0, kết quả là -0.

Nhưng, nếu một số là chuỗi, hãy tuân theo các quy tắc sau:

  • Nếu cả hai số đều là chuỗi, chuỗi thứ hai sẽ được nối vào chuỗi đầu tiên.
  • Nếu chỉ một số là chuỗi, chuyển đổi số còn lại thành chuỗi, kết quả là chuỗi kết nối với nhau.

Ví dụ:

var result = 5 + 5;	//Hai số
alert(result);		//Xuất ra "10"
var result2 = 5 + "5";	//Một số và một chuỗi
alert(result2);		//Xuất ra "55"

Mã này giải thích sự khác biệt giữa hai chế độ của toán tử cộng. Trong trường hợp bình thường, 5+5 bằng 10 (giá trị nguyên thủy), như trong hai dòng mã đầu tiên của ví dụ trên. Tuy nhiên, nếu thay đổi một số thành chuỗi "5", thì kết quả sẽ là "55" (giá trị chuỗi nguyên thủy), vì số còn lại cũng sẽ được chuyển đổi thành chuỗi.

Lưu ý:Để tránh lỗi phổ biến trong JavaScript, hãy kiểm tra cẩn thận loại dữ liệu của các số trước khi sử dụng toán tử cộng.

Toán tử trừ

Toán tử trừ (-) cũng là một toán tử rất phổ biến:

var iResult = 2 - 1;

Như với toán tử cộng, toán tử trừ cũng có một số hành vi đặc biệt khi xử lý giá trị đặc biệt:

  • Nếu một số là NaN, thì kết quả là NaN.
  • Infinity trừ Infinity, kết quả là NaN.
  • -Infinity trừ -Infinity, kết quả là NaN.
  • Infinity trừ -Infinity, kết quả là Infinity.
  • -Infinity trừ Infinity, kết quả là -Infinity.
  • +0 trừ +0, kết quả là +0.
  • -0 trừ -0, kết quả là -0.
  • +0 trừ -0, kết quả là +0.
  • Nếu một toán tử không phải là số, thì kết quả là NaN.

Ghi chú:Nếu cả hai số đều là số, thì thực hiện phép trừ thông thường và trả về kết quả.