Các từ khóa dành riêng (Reserved Words) trong JavaScript
Javascript căn bản | by
Trong JavaScript, từ khóa dành riêng (Reserved Words) là những từ có ý nghĩa đặc biệt và được ngôn ngữ lập trình này sử dụng cho các chức năng cụ thể. Những từ này không thể được sử dụng làm tên biến, hàm hoặc tên thuộc tính vì chúng có thể gây lỗi cú pháp hoặc hành vi không mong muốn trong chương trình.
Việc hiểu rõ các từ khóa dành riêng giúp lập trình viên tránh được những sai sót trong quá trình viết code, đồng thời đảm bảo mã nguồn được viết theo đúng chuẩn của JavaScript. Ngoài ra, nắm vững cách sử dụng các từ khóa này sẽ giúp chúng ta tận dụng tốt các tính năng của JavaScript, từ khai báo biến, xử lý luồng chương trình, đến lập trình bất đồng bộ và quản lý bộ nhớ hiệu quả.
Bài viết này sẽ đi sâu vào danh sách các từ khóa dành riêng trong JavaScript, phân loại chúng theo chức năng, đồng thời cung cấp những lưu ý quan trọng khi sử dụng để giúp bạn viết mã an toàn và tối ưu hơn.
Từ khóa dành riêng (Reserved Words) trong JavaScript
Reserved Words là gì?
Trong JavaScript, Reserved Words (từ khóa dành riêng) là những từ đã được ngôn ngữ lập trình định nghĩa sẵn để thực hiện một chức năng cụ thể. Những từ này không thể được sử dụng cho mục đích khác, chẳng hạn như đặt tên biến, hàm, hay thuộc tính đối tượng, vì chúng có thể gây ra lỗi cú pháp hoặc hành vi không mong muốn.
Ví dụ:
var function = "test"; // Lỗi: Unexpected token 'function' var return = 100; // Lỗi: Unexpected token 'return'
Tại sao cần biết về các từ khóa dành riêng?
Việc hiểu rõ và tuân thủ các quy tắc về từ khóa dành riêng trong JavaScript mang lại nhiều lợi ích:
- Tránh lỗi cú pháp (Syntax Errors): Sử dụng từ khóa dành riêng sai cách có thể khiến trình thông dịch báo lỗi ngay lập tức.
- Giúp code dễ đọc, dễ hiểu: Tuân thủ đúng quy tắc đặt tên giúp code rõ ràng hơn và tránh nhầm lẫn.
- Tăng tính tương thích với các phiên bản JavaScript: Một số từ khóa có thể không được sử dụng ở phiên bản hiện tại nhưng có thể trở thành từ khóa chính thức trong các phiên bản tương lai.
Ảnh hưởng của Reserved Words đến cú pháp và quy tắc đặt tên trong JavaScript
Không thể sử dụng Reserved Words làm tên biến, hàm, hoặc đối tượng
JavaScript sẽ không cho phép bạn sử dụng các từ khóa này để đặt tên biến, hàm hoặc thuộc tính của đối tượng.
Ví dụ:
let new = "Hello"; // Lỗi: Unexpected token 'new' const class = "JavaScript"; // Lỗi: Unexpected token 'class'
Một số từ khóa có thể gây lỗi nếu sử dụng không đúng cách
Một số từ như eval
hoặc arguments
là từ khóa đặc biệt, và việc sử dụng chúng làm tên biến có thể gây ra lỗi hoặc hành vi không mong muốn.
Ví dụ:
function test() { let arguments = "data"; // Lỗi: Cannot assign to 'arguments' }
Một số từ khóa không thể dùng nhưng chưa được sử dụng trong JavaScript
Có những từ không được sử dụng trong phiên bản JavaScript hiện tại nhưng đã được dành riêng để tránh xung đột trong tương lai, chẳng hạn như enum
, implements
, interface
.
Ví dụ:
let interface = "UI"; // Lỗi: Unexpected token 'interface'
Phân loại từ khóa dành riêng trong JavaScript
JavaScript có nhiều từ khóa dành riêng phục vụ cho các mục đích khác nhau. Dưới đây là các nhóm từ khóa quan trọng cùng với cách sử dụng và lưu ý khi lập trình.
Từ khóa khai báo biến và hằng số
Những từ khóa này dùng để khai báo và quản lý dữ liệu trong JavaScript.
var
(cũ, ít dùng)
- Có phạm vi function scope, dễ gây lỗi do hoisting.
- Có thể khai báo lại và thay đổi giá trị trong cùng một phạm vi.
Ví dụ:
var x = 10; var x = 20; // Hợp lệ, nhưng dễ gây lỗi console.log(x); // 20
let
(thay thế var
, phạm vi block)
- Có block scope, giúp tránh lỗi phạm vi biến.
- Không thể khai báo lại trong cùng một phạm vi.
Ví dụ:
let y = 10; let y = 20; // Lỗi: Identifier 'y' has already been declared
const
(biến hằng số, không thể thay đổi giá trị)
- Có block scope, không thể gán lại giá trị sau khi khai báo.
Ví dụ:
const PI = 3.14; PI = 3.1415; // Lỗi: Assignment to constant variable.
Từ khóa liên quan đến hàm và lớp (Functions & Classes)
function
- Khai báo hàm
Dùng để định nghĩa hàm trong JavaScript.
Ví dụ:
function greet(name) { return "Hello, " + name; }
return
- Trả về giá trị từ hàm
Dùng trong hàm để trả về kết quả.
Ví dụ:
function add(a, b) { return a + b; }
class
- Khai báo lớp (OOP)
Dùng để tạo lớp trong lập trình hướng đối tượng.
Ví dụ:
class Person { constructor(name) { this.name = name; } }
extends
- Kế thừa lớp
Cho phép một lớp con kế thừa lớp cha.
Ví dụ:
class Student extends Person { constructor(name, grade) { super(name); this.grade = grade; } }
super
- Gọi constructor của lớp cha
Dùng trong lớp con để gọi phương thức của lớp cha.
Ví dụ:
class Employee extends Person { constructor(name, salary) { super(name); this.salary = salary; } }
Từ khóa điều kiện và vòng lặp
if
,else
,switch
,case
,default
- Dùng để kiểm tra điều kiện trong chương trình.
Ví dụ:
if (x > 10) { console.log("Lớn hơn 10"); } else { console.log("Nhỏ hơn hoặc bằng 10"); }
Vòng lặp
for
,while
,do
,break
,continue
- Điều khiển luồng lặp trong JavaScript.
Ví dụ:
for (let i = 0; i < 5; i++) { if (i === 3) break; // Dừng vòng lặp khi i = 3 console.log(i); }
Từ khóa xử lý bất đồng bộ và lỗi
async
/ await
- Lập trình bất đồng bộ
Cho phép viết code async dễ đọc hơn.
Ví dụ:
async function fetchData() { let response = await fetch("https://api.example.com/data"); let data = await response.json(); console.log(data); }
try
, catch
, finally
, throw
- Xử lý lỗi
Bắt lỗi trong chương trình JavaScript.
Ví dụ:
try { let result = someFunction(); } catch (error) { console.error("Lỗi:", error); } finally { console.log("Luôn thực thi"); }
Từ khóa liên quan đến kiểu dữ liệu và phạm vi biến
typeof
- Kiểm tra kiểu dữ liệu
console.log(typeof "Hello"); // string console.log(typeof 10); // number
instanceof
- Kiểm tra đối tượng thuộc lớp nào
console.log([] instanceof Array); // true
this
- Đại diện cho đối tượng hiện tại
class Car { constructor(name) { this.name = name; } }
new
- Tạo đối tượng mới từ class
let myCar = new Car("Toyota");
delete
- Xóa thuộc tính trong đối tượng
let obj = { a: 1, b: 2 }; delete obj.a; console.log(obj); // { b: 2 }