6. Toán tử hỗn hợp trong JavaScript

Các toán tử sau được gọi là các toán tử đặc biệt trong JavaScript:

Toán tử Ý nghĩa
(:?) Toán tử điều kiện trả về giá trị dựa trên điều kiện. Nó giống như if-else.
, Cho phép nhiều biểu thức được đánh giá như một câu lệnh đơn.
Delete Toán tử delete xóa một thuộc tính của đối tượng.
In Toán tử in kiểm tra nếu đối tượng có thuộc tính đã cho.
Instanceof Kiểm tra nếu đối tượng là một thể hiện của kiểu dữ liệu đã cho.
New Tạo một thể hiện của môt đối tượng.
Typeof Kiểm tra kiểu đối tượng.
Void Nó loại bỏ giá trị trả về của biểu thức.
Yield Kiểm tra những gì được trả về trong một trình tạo bởi trình lặp của trình tạo.

Sau đây, chúng ta sẽ bàn luận hai toán tử mà khá hữu ích trong JavaScript: Toán tử điều kiện (? : ) và toán tử typeof.

6.1. Toán tử điều kiện ( ? : )

Toán tử điều kiện đầu tiên tính toán một biểu thức để xem nó là true hoặc false và sau đó thực thi một trong hai lệnh đã cung cấp phụ thuộc vào kết quả của sự tính toán. Ta có thể xem mô tả sau:

? :  (Điều kiện )

Nếu điều kiện là true ? Thì giá trị X : Nếu không thì giá trị Y

Ví dụ:

<html>
   <body>
   
      <script type="text/javascript">
         <!--
            var a = 10;
            var b = 20;
            var linebreak = "<br />";
         
            document.write ("((a > b) ? 100 : 200) => ");
            result = (a > b) ? 100 : 200;
            document.write(result);
            document.write(linebreak);
         
            document.write ("((a < b) ? 100 : 200) => ");
            result = (a < b) ? 100 : 200;
            document.write(result);
            document.write(linebreak);
         //-->
      </script>
      
      <p>Đặt các biến thành các giá trị khác nhau và các toán tử khác nhau rồi thử ...</p>
   </body>
</html>

6.2. Toán tử typeof

Toán tử typeof là một toán tử một ngôi mà được đặt trước toán hạng đơn của nó, mà có thể là bất cứ kiểu nào. Giá trị của nó là một chuỗi chỉ dẫn kiểu dữ liệu của toán hạng. Toán tử typeof ước lượng “number”, “string”, hoặc “boolean” nếu toán hạng của nó là giá trị số, chuỗi, hoặc logic và trả về kết quả là true hoặc false trên sự ước lượng.

Dưới đây là danh sách các giá trị trả về cho toán tử typeof.

Kiểu Chuỗi trả về
Number “number”
String “string”
Boolean “boolean”
Object “object”
Hàm “function”
Undefined “undefined”
Null “object”

Ví dụ:

<script type="text/javascript">
         <!--
            var a = 10;
            var b = "String";
            var linebreak = "<br />";
         
            result = (typeof b == "string" ? "B is String" : "B is Numeric");
            document.write("Result => ");
            document.write(result);
            document.write(linebreak);
         
            result = (typeof a == "string" ? "A is String" : "A is Numeric");
            document.write("Result => ");
            document.write(result);
            document.write(linebreak);
         //-->
      </script>

7. Toán tử gán trong JavaScript

Toán tử gán được dùng để gán giá trị ở bên phải toán tử vào biến ở bên trái toán tử. Ta có thể thấy nó gần giống với toán tử so sánh. Chỉ khác là toán tử gán là gán trực tiếp còn toán tử so sánh là so sánh và trả về True hoặc False. Toán tử này thường hay sử dụng nhiều nhất trong các ngôn ngữ lập trình.

Có các toán tử gán sau:

Toán tử Ý nghĩa Ví dụ
= Gán các giá trị từ toán hạng bên phải cho toán hạng bên trái 1 + 1 = 2
+= Nó cộng giá trị toán hạng phải với toán hạng trái và gán kết quả cho toán hạng trái var a=10; a+=20; bây giờ a = 30
-= Nó trừ toán hạng phải từ toán hạng trái và gán kết quả cho toán hạng trái var a=20; a-=10; bây giờ a = 10
*= Nó nhân toán hạng phải với toán hạng trái và gán kết quả cho toán hạng trái var a=10; a*=20; bây giờ a = 200
/= Nó chia toán hạng trái cho toán hạng phải và gán kết quả cho toán hạng trái var a=10; a/=2; bây giờ a = 5
%= Chia lấy phần dư toán hạng trái cho toán hạng phải và gán kết quả là phần dư cho toán hạng trái var a=10; a%=2; bây giờ a = 0

Ghi chú − Cùng theo mạch phát triển logic cho các toán tử thao tác Bit, vì thế chúng ta sẽ có các toán tử sau: <<= , >>= , >>= , &= , |=^= .

8. Toán tử với chuỗi

Toán tử với chuỗi sử dụng nhiều là nối hai chuỗi lại với nhau, sử dụng toán tử + để nối. Toán tử này có thể nối số vào chuỗi.

Ví dụ:

var mystring1 = "Học viết mã ";
var mystring2 = "JavaScript.";
document.write(mystring1 + mystring2);
//sẽ viết ra: Học viết mã JavaScript.

Bạn có thể đưa vào chuỗi nằm giữa dấu (không phải hay “” ), trong chuỗi đó có thể chèn biểu thức với ký hiệu ${biểu-thức}

Ví dụ:

let tb = `Hai nhân hai là ${2*2}`;
let name = "Laptrinhtudau";
let msg = `Xin chao ${name}`;
console.log(tb);
console.log(msg);

9. Độ ưu tiên của các toán tử trong JavaScript

Khi các bạn có tính giá trị của biểu thức thì phải tuân theo thứ tự ưu tiên của các toán tử trong biểu thức đó. Ví dụ biểu thức có các phép toán nhân chia cộng trừ thì ta phải áp dụng quy tắc tính phép nhân và chia trước, sau đó mới tính đến phép cộng và trừ.

Ta có bảng sau:

Loại toán tử Toán tử Tính kết hợp
Một ngôi – , ++ , — Phải sang trái
Hai ngôi ^ Trái sang phải
* , / , %
+ , –
= Phải sang trái

10. Một số lưu ý với toán tử so sánh trong JavaScript

Chúng ta có hai toán tử so sánh bằng đó là toán tử ===== , vậy sự khác nhau giữa hai toán tử này như thế nào? Khi nào thì sử dụng các toán tử đó? Khác với các ngôn ngữ cao cấp khác như C# thì khi khai báo biến bạn không cần phải khai báo kiểu dữ liệu cho biến mà nó sẽ dựa vào giá trị mà bạn truyền cho biến, vì vậy bạn có thể chuyển đổi giá trị cho biến với nhiều kiểu dữ liệu khác nhau.

Ví dụ:

var a = 12; // a đang ở kiểu number
a = '12'; // a bây giờ là kiểu string

Về nguyên tắc thì cả hai toán tử đều có chung một chức năng là so sánh giá trị của hai biến, tuy nhiên với toán tử == thì chỉ so sánh giá trị mà không so sánh kiểu dữ liệu, còn toán tử === thì có so sánh luôn kiểu dữ liệu.

Ví dụ:

var a = 12; // number
var b = '12'; // string
// TRUE vì cả hai đều có giá trị là 12
document.write(a == b);
// FALSE vì mặc dù giá trị bằng nhau nhưng
// kiểu dữ liệu của a là number, của b là string
document.write(a === b);