Mục lục

    Trong lập trình, có những giá trị đóng vai trò là quy tắc, định mức, hoặc cấu hình—chúng cần phải giữ nguyên và không bao giờ được phép thay đổi. Để đảm bảo tính toàn vẹn đó, các ngôn ngữ lập trình sử dụng một từ khóa mạnh mẽ: const.

    Vậy const là gì, nó hoạt động ra sao và tại sao nó lại là một công cụ không thể thiếu đối với mọi lập trình viên? Bài viết này sẽ giải thích chi tiết về từ khóa const và cách nó được áp dụng khác nhau trong các ngôn ngữ phổ biến như JavaScript và C/C++.

    Const là gì? Định nghĩa chung

    Const là gì? Const (viết tắt của constant, nghĩa là hằng số) là một từ khóa được sử dụng để khai báo một giá trị cố định không đổi (hằng số) trong suốt quá trình thực thi chương trình.

    Khi bạn khai báo một biến với const, bạn đang cam kết với trình biên dịch (compiler) hoặc trình thông dịch (interpreter) rằng giá trị ban đầu của biến đó sẽ không được gán lại (reassign) sau này.

    Const là gì, Định nghĩa chung
    Const là gì, Định nghĩa chung

    Mục đích chính của việc sử dụng const:

    1. Tăng tính dễ đọc (Readability): Khi nhìn thấy const, lập trình viên biết ngay rằng giá trị này là cố định và không cần tìm kiếm các đoạn mã có thể thay đổi nó.
    2. Ngăn ngừa lỗi (Bug Prevention): Tránh việc vô tình gán lại hoặc thay đổi các giá trị quan trọng (ví dụ: tốc độ ánh sáng, kích thước tối đa của bộ đệm, hoặc một hằng số toán học).
    3. Tối ưu hóa: Trình biên dịch có thể thực hiện tối ưu hóa hiệu suất tốt hơn khi biết rằng một giá trị sẽ không bao giờ thay đổi.

    Const trong JavaScript (Cơ chế chỉ đọc)

    Trong JavaScript, const được giới thiệu từ chuẩn ECMAScript 2015 (ES6) và được sử dụng rộng rãi, đặc biệt trong phát triển web hiện đại.

    Const trong JavaScript
    Const trong JavaScript

    1. Nguyên tắc cơ bản

    • Bắt buộc khởi tạo: Biến const phải được khởi tạo giá trị ngay lập tức khi khai báo. (Ví dụ: const PI = 3.14; là đúng, const PI; là sai).
    • Không thể gán lại: Bạn không thể thay đổi chính biến const để trỏ đến một giá trị mới.

    Ví dụ:

    JavaScript
    const USER_ID = 1001;
    // USER_ID = 1002; // LỖI: Không thể gán lại cho một hằng số.

    2. Mấu chốt: Sự khác biệt giữa Gán lại (Reassignment) và Thay đổi nội dung (Mutation)

    Đây là điểm thường gây nhầm lẫn nhất về const trong JavaScript:

    • Đối với giá trị nguyên thủy (Primitive Types): const hoạt động hoàn hảo, giá trị không đổi.
    • Đối với Đối tượng và Mảng (Objects and Arrays): Biến const chỉ đảm bảo rằng tham chiếu (reference) đến đối tượng/mảng là cố định. Bạn không thể gán lại biến cho một đối tượng khác, nhưng bạn hoàn toàn có thể thay đổi nội dung bên trong của đối tượng/mảng đó.

    Minh họa về Mutation trong JS:

    JavaScript
    const USER = {
        name: "Alice",
        age: 25
    };
    
    // USER = { name: "Bob" }; // LỖI: Không được gán lại toàn bộ đối tượng (reassignment)
    
    // ĐƯỢC PHÉP: Thay đổi nội dung bên trong đối tượng (mutation)
    USER.age = 26; 
    console.log(USER.age); // Kết quả: 26 (Đã thay đổi thành công)

    Để ngăn chặn cả việc thay đổi nội dung đối tượng trong JS, lập trình viên cần dùng thêm hàm Object.freeze().

    Xem thêm:

    CLR là gì? Giải thích Chi tiết về Common Language Runtime trong .NET
    Marquee HTML là gì? cú pháp, cách sử dụng và ví dụ minh họa trực quan
    Elixir là gì? Giải mã toàn tập về “thần dược” trong thế giới lập trình

    Const trong C/C++ (Sự phức tạp của Con trỏ)

    Trong các ngôn ngữ cấp thấp hơn như C và C++, const là một từ khóa mạnh mẽ và phức tạp hơn, thường được dùng để kiểm soát quyền truy cập bộ nhớ thông qua con trỏ.

    Const trong C và C++
    Const trong C và C++

    1. Hằng số đơn giản

    Giống như JavaScript, const được dùng để tạo một hằng số:

    C++
    const int MAX_USERS = 50;
    // MAX_USERS = 60; // LỖI biên dịch

    2. Const và Con trỏ (The Const Pointer Puzzle)

    Vị trí của const trong khai báo con trỏ quyết định ý nghĩa của nó:

    Cú phápÝ nghĩaĐiều gì là hằng số?
    const int *ptr;Dữ liệu là hằng số (Constant Data)Bạn không thể thay đổi giá trị mà con trỏ đang trỏ tới.
    int *const ptr;Con trỏ là hằng số (Constant Pointer)Bạn không thể thay đổi địa chỉ mà con trỏ đang lưu trữ (phải khởi tạo ngay).
    const int *const ptr;Cả hai đều là hằng sốBạn không thể thay đổi cả giá trị và địa chỉ của con trỏ.

    3. Const trong Hàm (Const Methods)

    Trong C++, từ khóa const còn được đặt sau khai báo hàm thành viên của một lớp:

    C++
    class Account {
        int balance;
    public:
        int getBalance() const {
            return balance;
        }
        // const ở đây đảm bảo hàm này KHÔNG thay đổi bất kỳ biến thành viên nào của đối tượng.
    };

    Tóm tắt Lợi ích của Const

    Sử dụng const là một thói quen lập trình tốt, mang lại những lợi ích đáng kể:

    • An toàn dữ liệu: Bảo vệ các giá trị quan trọng không bị thay đổi ngẫu nhiên.
    • Tài liệu hóa rõ ràng: Giúp các lập trình viên khác (và chính bạn trong tương lai) dễ dàng hiểu được mục đích của biến ngay từ cái nhìn đầu tiên.
    • Tối ưu hóa hiệu suất: Cho phép trình biên dịch/thông dịch đưa ra các quyết định tối ưu mã hiệu quả hơn, vì nó biết rằng giá trị sẽ không thay đổi.

    Tóm lại, Const là gì? const là một trong những từ khóa nền tảng nhất trong lập trình, là công cụ không thể thiếu để xây dựng mã nguồn ổn định, dễ bảo trì và có hiệu suất cao.

    5/5 - (1 bình chọn)

    Công nghệ tương lai Lập trình/ Code

    Portainer Là Gì? Toàn Tập Về Công Cụ Quản Trị Container Hàng Đầu (Hướng Dẫn Chi Tiết)

    Sự bùng nổ của công nghệ Container hóa (Containerization) với đầu tàu là Docker

    Xem thêm

    Công nghệ tương lai Công cụ và hướng dẫn Lập trình/ Code

    Helper Là Gì? Bí Quyết Viết Code “Sạch” Và Tối Ưu Trong Lập Trình

    Trong thế giới lập trình và phát triển phần mềm, việc phải lặp đi

    Xem thêm

    Digital Maketing Đồ Họa và Video Xu hướng

    Des là gì? Giải mã ý nghĩa của Des trong Thiết kế, SEO, IT & Logistics

    Bạn đang lướt mạng xã hội và thấy ai đó bình luận: “Dân Des

    Xem thêm

    Để lại một bình luận

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chào mừng bạn đến với TASDIGITAL.net
    Chào mừng bạn đến với TASDIGITAL.net