Các từ khóa dành riêng (Reserved Words) trong JavaScript

Javascript căn bản | by Học Javascript

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)

  • 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ị)

  • 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 }

void - Biểu thức không trả về giá trị

console.log(void 0); // undefined

Từ khóa liên quan đến mô-đun (Modules)

importexport - Quản lý mã nguồn

Cho phép chia nhỏ code thành nhiều module dễ quản lý.

Ví dụ:

// module.js
export const PI = 3.14;

// main.js
import { PI } from "./module.js";
console.log(PI);

Từ khóa dành riêng cho JavaScript trong tương lai

Một số từ khóa hiện chưa được sử dụng rộng rãi nhưng đã được dành riêng cho các tính năng tương lai của JavaScript:

  • enum, implements, package, protected, static, interface, private, public.

Ví dụ (TypeScript - JavaScript tương lai):

class Example {
    private name: string;
}

Những từ khóa này hiện không hoạt động trong JavaScript thông thường nhưng có thể xuất hiện trong các phiên bản sau.

Các quy tắc và lưu ý khi sử dụng từ khóa trong JavaScript

Trong JavaScript, các từ khóa dành riêng (Reserved Words) có vai trò quan trọng trong việc định nghĩa cú pháp và chức năng của ngôn ngữ. Khi sử dụng JavaScript, cần tuân thủ một số quy tắc và lưu ý để tránh lỗi khi lập trình.

Không được đặt tên biến, hàm bằng các từ khóa dành riêng

  • JavaScript không cho phép sử dụng các từ khóa dành riêng làm tên biến, hàm hoặc đối tượng vì chúng đã có ý nghĩa đặc biệt trong ngôn ngữ.
  • Nếu sử dụng, trình biên dịch sẽ báo lỗi cú pháp (SyntaxError).

Ví dụ sai: Đặt tên biến bằng từ khóa

let return = "Hello"; //  Lỗi: Unexpected token 'return'
function class() { }   //  Lỗi: Unexpected token 'class'

Cách đúng: Đặt tên biến hợp lệ

Thay vì sử dụng từ khóa, có thể đặt tên biến có nghĩa tương tự nhưng tránh trùng với từ khóa.

let returnValue = "Hello";  // Đúng
function myClass() { }      //  Đúng

Sử dụng từ khóa đúng ngữ cảnh để tránh lỗi cú pháp

Lỗi phổ biến khi dùng từ khóa không đúng cách

Một số từ khóa có thể dễ gây nhầm lẫn nếu không được sử dụng đúng cách.

Ví dụ sai: Sử dụng return ngoài hàm

return 10; //  Lỗi: 'return' can only be used inside a function

Cách đúng:

function getValue() {
    return 10; //  Đúng
}

Ví dụ sai: Dùng break bên ngoài vòng lặp hoặc switch-case

break; //  Lỗi: Uncaught SyntaxError: Illegal break statement

Cách đúng:

for (let i = 0; i < 5; i++) {
    if (i === 3) break; //  Đúng
}

Một số từ khóa có thể bị thay đổi hoặc ngừng sử dụng trong các phiên bản JavaScript

JavaScript không ngừng phát triển và một số từ khóa có thể thay đổi hoặc bị loại bỏ theo thời gian. Dưới đây là một số ví dụ:

var dần được thay thế bằng let và const

Trước đây, var là cách duy nhất để khai báo biến, nhưng do phạm vi (scope) không an toàn, letconst đã được giới thiệu từ ES6.

var x = 10; // Cũ, nên tránh
let y = 20; // Mới, nên dùng

Một số từ khóa bị loại bỏ trong các phiên bản JavaScript mới

Một số từ khóa đã từng được đề xuất nhưng không còn được sử dụng hoặc bị hạn chế trong JavaScript chuẩn. Ví dụ:

  • enum (được dùng trong TypeScript, nhưng không có trong JavaScript chuẩn)
  • implements, interface, package, private, protected, public, static (có trong Java nhưng chưa được hỗ trợ hoàn toàn trong JavaScript)

Ví dụ trong TypeScript:

class Example {
    private name: string; //  Đúng trong TypeScript
}

Nhưng nếu dùng trong JavaScript, sẽ bị lỗi:

class Example {
    private name; //  Lỗi: Unexpected token 'private'
}

Kết bài

Các từ khóa dành riêng (Reserved Words) trong JavaScript đóng vai trò quan trọng trong cú pháp và cấu trúc của ngôn ngữ. Việc hiểu và sử dụng đúng các từ khóa này giúp lập trình viên tránh lỗi cú pháp, cải thiện hiệu suất và đảm bảo code dễ bảo trì.

Khi viết JavaScript, hãy luôn ghi nhớ:

  • Không đặt tên biến, hàm bằng từ khóa dành riêng.
  • Sử dụng từ khóa đúng ngữ cảnh để tránh lỗi không mong muốn.
  • Cập nhật kiến thức về các thay đổi trong JavaScript để tránh dùng các từ khóa lỗi thời.

Nắm vững và tuân thủ các quy tắc này sẽ giúp bạn viết code JavaScript chuyên nghiệp, tối ưu và dễ đọc hơn.

Bài viết liên quan