Một vài chú ý với biến Global Variable trong JavaScript

dùng global variable ít nhất có thể

Anh Dao Le
Coding For Fun
3 min readDec 20, 2019

--

JavaScript sử dụng các hàm để quản lý phạm vi của biến. Một biến được khai bao bên trong hàm là chỉ có ý nghĩa cục bộ với hàm đó. Mặt khác, các biến toàn cục là các biến được khai báo bên ngoài bất kỳ hàm nào hoặc đơn giản được sử dụng mà không được khai báo.

Sử dụng biến toàn cục và cục bộ trong JavaScript

Nhầm lẫn khi đặt tên

Biến toàn cục được chia sẻ giữa tất cả các mã nguồn trong chương trình JavaScript của bạn. Và đơn giản chúng có thể dễ xảy ra xung đột khi đặt tên. Nó cũng xảy ra khi mã không được viết bởi lập trình viên của ứng dụng (hoặc trang Web) đó.

Ví dụ một đoạn mã của bên thứ ba định nghĩa một biến toàn cục đặt tên là result. Bạn cũng định nghĩa một biến toàn cục khác đặt tên là result, nó có thể dẫn đến đoạn mã của bên thứ ba không làm việc đúng mục đích do ghi đè giá trị. Do vậy, chiến lược là hãy giảm thiếu tối đa sử dụng biến toàn cục trong chương trình của bạn.

Trong JavaScript có hai đặc tính làm dễ dàng tao ra biến toàn cục, hãy xem đoạn mã dưới đây.

  • Sử dụng biến toàn cục không phải khai báo.
  • Bất ký biến nào không khai báo đều trở thành biến của đối tượng toàn cục.

Trong đoạn mã trên, result được sử dụng nhưng không phải khai báo. Nhưng hãy tưởng tưởng nếu bạn khai báo result ngoài phạm vi hàm như toàn cục thì nó có thể trở thành nguồn gốc của các vấn đề sau này.

Cách khai báo dưới đây cũng xảy ra trường hợp nhầm lẫn khi đó a là cục bộ nhưng b lại là toàn cục (do quy tắc phải tới trái).

Xử lý vấn đề trên như thế nào? Quy tắc ở đây là luôn khai báo biến với từ khoá var, ví dụ như sau.

Tác dụng phụ khi quên từ khoá var

Có sự khác biệt đáng kể giữa biến toàn cục ngụ ý (khai báo ko rõ ràng) và biến toàn cục được khai báo cụ thể.

  • Biến toàn cục được khai báo với từ khoá var không thể bị xoá.
  • Biến toàn cục ngụ ý (không được khai báo với từ khoá var) có thể bị xoá, trừ trường hợp nó được tạo ra bên trong hàm.

Điều này cho thấy rằng biến toàn cục ngụ ý về mặt kỹ thuật không phải là biến thực, nhưng chúng là thuộc tính của đối tượng toàn cầu. Các thuộc tính có thể bị xóa với toán tử xóa trong khi các biến không thể.

Truy cập đối tượng toàn cục

Bạn có thể truy cập đối tượng toàn cục sử dụng đoạn mã sau.

Cảm ơn đã đọc, bye bye :)

--

--