Toán tử trong JavaScript

Toán tử trong JavaScript

Trong bài viết này, chúng tôi sẽ giải thích về các toán tử trong JavaScript.

YouTube Video

Toán tử trong JavaScript

Các toán tử trong JavaScript là các ký hiệu hoặc từ khóa được sử dụng để thực hiện các phép tính hoặc so sánh trên số và biến. Có nhiều loại toán tử khác nhau, mỗi loại thực hiện các phép toán riêng biệt. Dưới đây là tổng hợp một số toán tử chính:.

Toán tử số học

Các toán tử số học của JavaScript bao gồm những điều sau đây:.

Toán tử Mô tả Ví dụ Kết quả
+ Phép cộng 5 + 2 7
- Phép trừ 5 - 2 3
* Phép nhân 5 * 2 10
/ Phép chia 5 / 2 2.5
% Phép chia lấy dư (Modulus) 5 % 2 1
++ Tăng thêm 1 (Increment) let x = 5; x++ 6
-- Giảm đi 1 (Decrement) let x = 5; x-- 4
 1let a = 10; // Initialize variable 'a' with the value 10
 2let b = 3;  // Initialize variable 'b' with the value 3
 3
 4// Perform and display arithmetic operations between 'a' and 'b'
 5console.log("Addition (a + b):      ", a + b); // 13
 6console.log("Subtraction (a - b):   ", a - b); // 7
 7console.log("Multiplication (a * b):", a * b); // 30
 8console.log("Division (a / b):      ", a / b); // 3.333...
 9console.log("Modulus (a % b):       ", a % b); // 1
10
11// Demonstrate post-increment operation on 'a'
12// Output the current value of 'a' (10), then increment
13console.log("Post-increment (a++):  ", a++);
14// Display the incremented value of 'a' (11)
15console.log("Value of 'a' after increment:", a);
16
17// Demonstrate pre-increment operation on 'a'
18// Increment 'a' first (12) then output
19console.log("Pre-increment (++a):   ", ++a);
20
21// Demonstrate post-decrement operation on 'a'
22// Output the current value of 'a' (12), then decrement
23console.log("Post-decrement (a--):  ", a--);
24// Display the decremented value of 'a' (11)
25console.log("Value of 'a' after decrement:", a);
26
27// Demonstrate pre-decrement operation on 'a'
28// Decrement 'a' first (10) then output
29console.log("Pre-decrement (--a):   ", --a);

Các toán tử số học thực hiện các phép toán cơ bản trên số. Ngoài phép cộng và phép trừ, bạn cũng có thể thực hiện các phép toán như chia lấy dư, tăng thêm và giảm đi. Lưu ý rằng giá trị trả về bởi việc tăng thêm hoặc giảm đi sẽ khác nhau tùy thuộc vào việc toán tử đứng trước hay sau toán hạng.

Toán tử gán

Các toán tử gán của JavaScript bao gồm những điều sau đây:.

Toán tử Mô tả Ví dụ Kết quả
= Gán x = 5 x được gán giá trị 5
+= Gán với phép cộng x += 5 x = x + 5
-= Gán với phép trừ x -= 5 x = x - 5
*= Gán với phép nhân x *= 5 x = x * 5
/= Gán với phép chia x /= 5 x = x / 5
%= Gán theo phép toán lấy dư x %= 5 x = x % 5
 1let x = 10;
 2
 3x += 5;  // x = x + 5, so x becomes 15
 4console.log('After x += 5 : ', x);  // 15
 5
 6x -= 10;
 7console.log('After x -= 10 : ', x);  // 5
 8
 9x *= 3;
10console.log('After x *= 3 : ', x);  // 15
11
12x /= 3;
13console.log('After x /= 3 : ', x);  // 5
14
15x %= 2;
16console.log('After x %= 2 : ', x);  // 1

Toán tử gán được sử dụng để gán giá trị cho biến hoặc cập nhật giá trị của biến. Ngoài phép gán thông thường, còn có các toán tử gán dành cho các phép toán số học như cộng và lấy dư.

Toán tử so sánh

Các toán tử so sánh của JavaScript bao gồm những điều sau đây:.

Toán tử Mô tả Ví dụ Kết quả
== Bằng nhau 5 == "5" true
=== Bằng tuyệt đối (Cả kiểu dữ liệu và giá trị đều bằng nhau) 5 === "5" false
!= Không bằng 5 != "5" false
!== Không bằng tuyệt đối 5 !== "5" true
> Lớn hơn 5 > 2 true
< Nhỏ hơn 5 < 2 false
>= Lớn hơn hoặc bằng 5 >= 5 true
<= Nhỏ hơn hoặc bằng 5 <= 4 false
 1console.log("5 == '5' evaluates to:", 5 == "5");   // true (because the values are equal)
 2console.log("5 === '5' evaluates to:", 5 === "5"); // false (because the types are different)
 3console.log("5 != '5' evaluates to:", 5 != "5");   // false
 4console.log("5 !== '5' evaluates to:", 5 !== "5"); // true
 5console.log("5 > 2 evaluates to:", 5 > 2);         // true
 6console.log("5 < 2 evaluates to:", 5 < 2);         // false
 7console.log("5 >= 5 evaluates to:", 5 >= 5);       // true
 8console.log("5 <= 4 evaluates to:", 5 <= 4);       // false
 9console.log("5 >= '5' evaluates to:", 5 >= "5");   // true
10console.log("5 <= '5' evaluates to:", 5 <= "5");   // true
  • Toán tử so sánh sẽ so sánh các giá trị và trả về kết quả là true hoặc false.
  • Toán tử so sánh bằng (==) tự động chuyển đổi các kiểu khác nhau nếu cần thiết trước khi thực hiện so sánh. Toán tử so sánh bằng nghiêm ngặt (===) không thực hiện bất kỳ chuyển đổi kiểu nào trong quá trình so sánh và chỉ trả về true nếu cả hai giá trị có cùng kiểu và cùng giá trị. Việc sử dụng toán tử so sánh bằng nghiêm ngặt (===) giúp ngăn ngừa các lỗi gây ra bởi việc chuyển đổi kiểu không mong muốn, do đó nên ưu tiên sử dụng toán tử này.

Toán tử logic

Các toán tử lô-gic của JavaScript bao gồm những điều sau đây:.

Toán tử Mô tả Ví dụ Kết quả
&& AND (Đúng nếu cả hai điều kiện đều đúng) true && false false
|| OR (Đúng nếu một trong hai điều kiện đúng) true || false true
! NOT (Chuyển true thành false và false thành true) !true false
1let a = true;
2let b = false;
3
4console.log("a && b evaluates to:", a && b);  // false
5console.log("a || b evaluates to:", a || b);  // true
6console.log("!a evaluates to:", !a);          // false

Toán tử logic được sử dụng khi có nhiều điều kiện, để đánh giá sự kết hợp các điều kiện.

Ưu tiên của các Toán tử Lô-gic

Trong JavaScript, các toán tử lô-gic thường được đánh giá theo thứ tự NOT trước, sau đó đến AND, và cuối cùng là OR.

NOT có mức ưu tiên cao nhất

NOT là một toán tử đơn và được đánh giá với mức ưu tiên cao nhất.

1console.log(!true || false);  // false
AND có mức ưu tiên cao hơn OR

AND có mức ưu tiên cao hơn OR, vì vậy phần AND được đánh giá trước.

1console.log(true || false && false);  // true

Theo cách này, phần AND (&&) được đánh giá trước, và kết quả của nó được truyền đến OR (||).

ANDOR thực hiện đánh giá ngắn mạch

ANDOR trong JavaScript thực hiện đánh giá ngắn mạch. Nếu kết quả có thể được xác định bởi giá trị phía bên trái, thì biểu thức phía bên phải không được đánh giá.

1let a = false && console.log("This will not be printed");
2console.log(a);  // false
3
4let b = true || console.log("This will not be printed");
5console.log(b);  // true

Trong cả hai trường hợp, console.log() sẽ không được thực thi.

Thiết lập mức ưu tiên rõ ràng

Bằng cách nhóm rõ ràng các biểu thức với dấu ngoặc đơn, bạn có thể ngăn ngừa hiểu lầm về thứ tự ưu tiên.

1console.log(true || (false && false));  // true
Sự khác biệt giữa ngôn ngữ tự nhiên và cách hiểu của chương trình

Khi sử dụng các toán tử lô-gic, điều quan trọng là cần lưu ý đến sự mơ hồ trong ngôn ngữ tự nhiên. Ví dụ, khi nói 'chó trắng hoặc mèo,' nó có thể nghĩa là 'một con chó trắng hoặc bất kỳ màu mèo nào' hoặc 'một con chó trắng hoặc một con mèo trắng.'. Trong mã, nó sẽ trông như thế này:.

1if (isWhite && isDog || isCat) {
2    console.log(' "A white dog" or "a cat of any color" ');
3}
4
5if (isWhite && (isDog || isCat)) {
6    console.log(' "A white dog" or "a white cat" ');
7}
8
9console.log(true || (false && false));  // true

Do ngôn ngữ tự nhiên chứa sự mơ hồ như thế này, cần cẩn thận khi lập trình hoặc thiết kế.

Toán tử ba ngôi (Toán tử điều kiện)

JavaScript bao gồm một toán tử tam nguyên (toán tử điều kiện).

Toán tử Mô tả Ví dụ Kết quả
? : Nếu điều kiện đúng, thực thi phần bên trái, nếu sai, thực thi phần bên phải condition ? if true : if false Kết quả dựa trên điều kiện
1let age = 20;
2let message = age >= 18 ? "Adult" : "Minor";
3console.log(message);  // "Adult"

Nó được viết dưới dạng điều kiện ? giá trị nếu đúng : giá trị nếu sai.

Toán tử bitwise

Các toán tử bitwise của JavaScript bao gồm những điều sau.

Toán tử Mô tả Ví dụ Kết quả
& AND 5 & 1 1
| OR 5 | 1 5
^ XOR 5 ^ 1 4
~ NOT ~5 -6
<< Dịch trái 5 << 1 10
>> Dịch phải 5 >> 1 2
 1let x = 0x0F & 0x0C;
 2console.log("0x0F & 0x0C evaluates to:", x, "(0x0C, 12)");  // 0x0C (12)
 3
 4x = 0x04 | 0x02;
 5console.log("0x04 | 0x02 evaluates to:", x, "(0x06, 6)");  // 0x06 (6)
 6
 7x = 0x0F ^ 0x0C;
 8console.log("0x0F ^ 0x0C evaluates to:", x, "(0x03, 3)");  // 0x03 (3)
 9
10// The inverted number is represented as a negative value
11// because JavaScript numbers are stored as signed 32-bit integers.
12x = ~0x0C;
13console.log("~0x0C evaluates to:", x, "(-13, 0xF3)");  // 0xF3 (-13)
14
15x = 0x04 << 1;
16console.log("0x04 << 1 evaluates to:", x, "(0x08, 8)");    // 0x08 (8)
17x = 0x04 >> 1;
18console.log("0x04 >> 1 evaluates to:", x, "(0x02, 2)");    // 0x02 (2)

Các toán tử bit thực hiện tính toán trên các số ở mức bit. Chúng thường được sử dụng cho xử lý cấp thấp.

Toán tử kiểu dữ liệu

Các toán tử kiểu dữ liệu của JavaScript bao gồm những điều sau.

Toán tử Mô tả Ví dụ Kết quả
typeof Trả về kiểu dữ liệu của một biến typeof 123 "number"
instanceof Kiểm tra xem một đối tượng có thuộc về một lớp cụ thể không arr instanceof Array true
1console.log(typeof "Hello");  // "string"
2console.log(typeof 42);       // "number"
3
4let arr = [1, 2, 3];
5console.log("arr instanceof Array : ", arr instanceof Array); // true

Toán tử kiểu dữ liệu được sử dụng để kiểm tra kiểu của một giá trị hoặc chuyển đổi nó sang một kiểu cụ thể.

Toán tử typeof trả về kiểu dữ liệu của một biến.

Toán tử instanceof kiểm tra xem một đối tượng có thuộc một lớp cụ thể hay không.

Tóm tắt

  • Toán tử số học thực hiện các phép tính cơ bản.
  • Toán tử gán gán hoặc cập nhật giá trị trong các biến.
  • Toán tử so sánh so sánh hai giá trị và trả về đúng hoặc sai.
  • Toán tử logic đánh giá các kết hợp của điều kiện.
  • Toán tử ba ngôi cho phép bạn viết câu lệnh điều kiện ngắn gọn hơn so với if.
  • Toán tử bit thực hiện các tính toán ở mức bit.
  • Toán tử kiểu dữ liệu cho phép bạn kiểm tra kiểu của một giá trị.

Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.

YouTube Video