Ghi chú kỹ thuật của zhaoJian

Khóa học IT JavaScript Cơ bản 040_Toán tử

Học tập / JavaScript Cơ bản ~10949 từ · 28 phút đọc - lượt xem

Toán tử JavaScript được sử dụng để thực hiện các phép toán số học, so sánh, logic và trả về kết quả.

Toán tử số học

  • +: Cộng
  • -: Trừ
  • *: Nhân
  • /: Chia
  • %: Chia lấy dư
  • **: Lũy thừa

Ví dụ:

let a = 5;
let b = 2;
console.log(a + b); // Xuất 7
console.log(a - b); // Xuất 3
console.log(a * b); // Xuất 10
console.log(a / b); // Xuất 2.5
console.log(a % b); // Xuất 1
console.log(a**b); // Xuất 25

Toán tử gán

  • =: Gán
  • +=: Cộng và gán
  • -=: Trừ và gán
  • *=: Nhân và gán
  • /=: Chia và gán
  • %=: Chia lấy dư và gán
  • **=: Lũy thừa và gán
  • ??=: Gán nullish, chỉ gán khi giá trị biến là null hoặc undefined

Ví dụ:

let x = 5;
x += 2; // x = x + 2; Xuất 7
x -= 2; // x = x - 2; Xuất 3
x *= 2; // x = x * 2; Xuất 10
x /= 2; // x = x / 2; Xuất 2.5
x %= 2; // x = x % 2; Xuất 1
x **= 2; // x = x ** 2; Xuất 25
x ??= 2; // Xuất 5, gán 2 khi x là null hoặc undefined
console.log(x);

Toán tử so sánh

  • ==: Bằng (kiểu được tự động chuyển đổi)
  • ===: Bằng nghiêm ngặt (cả giá trị và kiểu đều bằng)
  • !=: Không bằng
  • !==: Không bằng nghiêm ngặt
  • >: Lớn hơn
  • <: Nhỏ hơn
  • >=: Lớn hơn hoặc bằng
  • <=: Nhỏ hơn hoặc bằng

Khi gặp giá trị không phải số, chúng được chuyển đổi thành số trước khi so sánh. Khi gặp chuỗi, mã Unicode của các ký tự được so sánh từng bit.

Ví dụ:

let a = 5;
let b = '5';
let c = 10;
console.log(a == b); // Xuất true, giá trị bằng nhau
console.log(a === b); // Xuất false, kiểu không bằng nhau
console.log(a != b); // Xuất false, giá trị bằng nhau
console.log(a !== b); // Xuất true, kiểu không bằng nhau
console.log(a > c); // Xuất false, 5 < 10
console.log(a < c); // Xuất true, 5 < 10
console.log(a >= c); // Xuất false, 5 <= 10
console.log(a <= c); // Xuất true, 5 <= 10

Toán tử logic

Khi xử lý toán hạng, toán tử logic chuyển đổi chúng thành giá trị boolean và trả về giá trị ban đầu của toán hạng.

&&: Logic AND

Được sử dụng để xác định xem các điều kiện có đồng thời true hay không. Nếu tất cả điều kiện đều true, kết quả của toàn bộ biểu thức là true; nếu không, kết quả là false. Phép toán AND tìm kiếm từ trái sang phải false đầu tiên. Nếu tìm thấy false, nó dừng tính toán và trả về giá trị ban đầu của toán hạng này (đánh giá ngắn mạch). Nếu cuối cùng không có false, nó trả về true cuối cùng.

||: Logic OR

Được sử dụng để xác định xem có ít nhất một điều kiện true hay không. Nếu có ít nhất một điều kiện true, kết quả của toàn bộ biểu thức là true; nếu tất cả điều kiện đều false, kết quả là false. Phép toán OR tìm kiếm từ trái sang phải true đầu tiên. Nếu tìm thấy true, nó dừng tính toán và trả về giá trị ban đầu của toán hạng này (đánh giá ngắn mạch). Nếu cuối cùng không có true, nó trả về false cuối cùng.

!: Logic NOT

Được sử dụng để đảo ngược giá trị boolean. Nếu giá trị là true, sử dụng toán tử logic NOT sẽ đảo ngược thành false; nếu giá trị là false, nó sẽ đảo ngược thành true. Logic NOT cũng có thể được sử dụng để chuyển đổi giá trị không phải boolean thành boolean. Nó chuyển đổi bất kỳ giá trị nào không phải null, undefined, 0, NaN, "" (chuỗi rỗng) thành true, trong khi các giá trị này được chuyển đổi thành false.

Ví dụ:

let a = true;
let b = false;
let c = "hello";
let d = null;
console.log(a && b); // Xuất false
console.log(c && d); // Xuất null
console.log(a || b); // Xuất true
console.log(c || d); // Xuất hello
console.log(!a); // Xuất false
console.log(!d); // Xuất true

Toán tử ba ngôi

  • condition ? expr1 : expr2: Nếu điều kiện đúng, trả về expr1, nếu không trả về expr2.

Ví dụ:

let age = 18;
let status = (age >= 18) ? 'Người lớn' : 'Vị thành niên';
console.log(status); // Xuất 'Người lớn'

Toán tử hợp nhất nullish

Toán tử hợp nhất nullish (Nullish Coalescing Operator) là toán tử được sử dụng để xử lý giá trị mặc định, thường được sử dụng để đảm bảo một biến có giá trị không null (không phải null và không phải undefined). Cú pháp của toán tử này là ??.

Khi sử dụng toán tử hợp nhất nullish, nó trả về toán hạng đầu tiên được định nghĩa (không phải null và không phải undefined). Nếu toán hạng đầu tiên là null hoặc undefined, nó trả về toán hạng thứ hai.

Ví dụ:

let num1 = 0;
let num2 = 1;
let result = num1 ?? num2;
console.log(result); // Xuất 0, vì num không phải null hoặc undefined
let user;
console.log(user ?? "Ẩn danh"); // Xuất Ẩn danh, vì user chưa được định nghĩa

Toán tử bitwise

  • &: Bitwise AND
  • |: Bitwise OR
  • ^: Bitwise XOR
  • ~: Bitwise NOT
  • <<: Dịch trái
  • >>: Dịch phải
  • >>>: Dịch phải không dấu

Ví dụ:

let a = 5; // Nhị phân: 0101
let b = 3; // Nhị phân: 0011
console.log(a & b); // Xuất 1 (Bitwise AND)
console.log(a | b); // Xuất 7 (Bitwise OR)
console.log(a ^ b); // Xuất 6 (Bitwise XOR)
console.log(~a); // Xuất -6 (Bitwise NOT)
console.log(a << 1); // Xuất 10 (Dịch trái)
console.log(a >> 1); // Xuất 2 (Dịch phải)

Toán tử khác

  • typeof: Trả về một chuỗi cho biết kiểu của toán hạng chưa được đánh giá.
  • instanceof: Được sử dụng để kiểm tra xem một đối tượng có phải là thể hiện của kiểu được chỉ định hay không.

Ví dụ:

let str = 'Hello';
console.log(typeof str); // Xuất 'string'
let arr = [1, 2, 3];
console.log(arr instanceof Array); // Xuất true

+ (Dấu cộng)

Trong JavaScript, dấu cộng + có nhiều công dụng, bao gồm phép toán số học, nối chuỗi và phép toán một ngôi.

Phép toán số học

Ví dụ:

let a = 5;
let b = 3;
let result = a + b;
console.log(result); // Xuất 8

Nếu cả hai đều là số, + được sử dụng để thực hiện phép cộng toán học.

Nối chuỗi

Ví dụ:

let str1 = 'Hello';
let str2 = ' World';
let result = str1 + str2;
console.log(result); // Xuất 'Hello World'

Nếu một trong các toán hạng là chuỗi, + sẽ thực hiện nối chuỗi.

Toán tử cộng một ngôi

Ví dụ:

let str = '42';
let num = +str;
console.log(num); // Xuất 42

Sử dụng + trước một toán hạng đơn có thể chuyển đổi toán hạng thành số, đây là chức năng của toán tử cộng một ngôi.

Chuyển đổi kiểu

Ví dụ:

let num = 42;
let str = '10';
let result = num + str; // Chuyển đổi kiểu ngầm định (ép kiểu)
console.log(result); // Xuất '4210'

Nếu một trong các toán hạng là chuỗi, + thực hiện chuyển đổi kiểu, chuyển đổi các toán hạng khác thành chuỗi, sau đó thực hiện nối chuỗi.

Nối mảng

Ví dụ:

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let result = arr1 + arr2;
console.log(result); // Xuất '1,2,34,5,6'

Khi một toán hạng là mảng, + chuyển đổi mảng thành chuỗi và sau đó thực hiện nối chuỗi.

Trường hợp đặc biệt

Ví dụ:

let specialResult1 = '1' + 2 + 3;
console.log(specialResult1); // Xuất '123'
let specialResult2 = 2 + 3 + '1';
console.log(specialResult2); // Xuất '51'

specialResult1, vì chuỗi xuất hiện ở bên trái nhất của +, các số tiếp theo được coi là chuỗi để nối. specialResult2, vì chuỗi xuất hiện ở bên phải nhất của +, các số trước đó thực hiện phép toán số học trước rồi mới nối.


- (Dấu trừ)

Trong JavaScript, dấu trừ - là toán tử được sử dụng để thực hiện phép trừ toán học.

Phép trừ toán học

Ví dụ:

let a = 5;
let b = 3;
let result = a - b;
console.log(result); // Xuất 2

Nếu cả hai đều là số, - được sử dụng để thực hiện phép trừ toán học.

Toán tử trừ một ngôi

Ví dụ:

let num = 42;
let result = -num;
console.log(result); // Xuất -42

Sử dụng - trước một toán hạng đơn có thể thực hiện phép phủ định một ngôi, biến toán hạng thành số đối của nó.

Chuyển đổi kiểu

Ví dụ:

let num1 = 42;
let str = '10';
let result = num1 - str;
console.log(result); // Xuất 32

Nếu một trong các toán hạng là chuỗi, - thực hiện chuyển đổi kiểu, chuyển đổi các toán hạng khác thành số, sau đó thực hiện phép trừ toán học.

Trường hợp đặc biệt

Ví dụ:

let specialResult = '10' - 2;
console.log(specialResult); // Xuất 8

Trong trường hợp đặc biệt này, vì nội dung trong chuỗi có thể được chuyển đổi thành số thành công, - thực hiện phép trừ toán học.


=, ==, === (Gán, Bằng lỏng, Bằng nghiêm ngặt)

Trong JavaScript, dấu bằng = là toán tử gán, trong khi ===== là toán tử so sánh. Bằng lỏng chuyển đổi cả hai toán hạng thành cùng kiểu trước khi so sánh. Trong các phán đoán điều kiện, === thường được sử dụng để so sánh bằng nghiêm ngặt vì nó không thực hiện chuyển đổi kiểu.

Toán tử gán

= được sử dụng để gán giá trị bên phải cho biến bên trái.

Ví dụ:

let x = 5;
let y = 'Hello';
console.log(x); // Xuất 5
console.log(y); // Xuất 'Hello'

Trong ví dụ này, = gán giá trị bên phải cho các biến xy bên trái.

Toán tử so sánh

===== được sử dụng để so sánh sự bằng nhau của hai giá trị.

Ví dụ:

let a = 5;
let b = '5';
console.log(a == b); // Xuất true
console.log(a === b); // Xuất false

== thực hiện chuyển đổi kiểu khi so sánh bằng, null == undefined xuất true. === yêu cầu cả giá trị và kiểu đều bằng nhau khi so sánh bằng, null === undefined xuất false. NaN không bằng bất kỳ giá trị nào, kể cả NaN chính nó.


++, -- (Tăng, Giảm)

Trong JavaScript, tăng (++) và giảm (--) là các toán tử được sử dụng để tăng hoặc giảm giá trị của biến.

Toán tử tăng (++)

Sau khi sử dụng, biến ban đầu tăng ngay lập tức 1. Tăng trước trả về giá trị sau khi tăng (giá trị mới); Tăng sau trả về giá trị trước khi tăng (giá trị cũ);

Ví dụ tăng trước:

let a = 5;
// Tăng trước, trước tiên tăng 1, sau đó sử dụng giá trị mới
let b = ++a;
console.log(b); // Xuất 6
console.log(a); // Xuất 6

Trong ví dụ này, a trước tiên tăng 1, sau đó b nhận giá trị mới của a (6).

Ví dụ tăng sau:

let x = 5;
// Tăng sau, trước tiên sử dụng giá trị hiện tại, sau đó tăng 1
let y = x++;
console.log(y); // Xuất 5
console.log(x); // Xuất 6

Trong ví dụ này, y trước tiên nhận giá trị hiện tại của x (5), sau đó x tăng 1.

Toán tử giảm (—)

Sau khi sử dụng, biến ban đầu giảm ngay lập tức 1. Giảm trước trả về giá trị sau khi giảm (giá trị mới); Giảm sau trả về giá trị trước khi giảm (giá trị cũ);

Ví dụ giảm trước:

let p = 10;
// Giảm trước, trước tiên giảm 1, sau đó sử dụng giá trị mới
let q = --p;
console.log(q); // Xuất 9
console.log(p); // Xuất 9

Trong ví dụ này, p trước tiên giảm 1, sau đó q nhận giá trị mới của p (9).

Ví dụ giảm sau:

let m = 8;
// Giảm sau, trước tiên sử dụng giá trị hiện tại, sau đó giảm 1
let n = m--;
console.log(n); // Xuất 8
console.log(m); // Xuất 7

Trong ví dụ này, n trước tiên nhận giá trị hiện tại của m (8), sau đó m giảm 1.

Độ ưu tiên của toán tử:

https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Operators/Operator_precedence

Chia sẻ:

Bình luận