×

Khái Niệm Scope Trong JavaScript Global, Function và Block Scope

Scope Là Gì Trong JavaScript?

Scope (phạm vi) trong JavaScript là một khái niệm xác định phạm vi (hay vùng) mà các biến, hàm, và đối tượng có thể được truy cập hoặc tham chiếu tới. Nói cách khác, scope xác định phần nào của mã có thể truy cập đến các biến và hàm đã được khai báo.

Có ba loại scope chính trong JavaScript: Global Scope, Function Scope, và Block Scope.

1. Global Scope

Các biến hoặc hàm được khai báo trong phạm vi toàn cục có thể được truy cập ở bất kỳ đâu trong mã của bạn. Một biến có global scope khi nó được khai báo ngoài bất kỳ hàm hoặc khối mã nào.

var globalVar = "I am global";

function globalScopeExample() {
  console.log(globalVar); // Output: I am global
}

globalScopeExample();
console.log(globalVar); // Output: I am global

2. Function Scope

Biến được khai báo bên trong một hàm chỉ có thể được truy cập từ bên trong hàm đó. Đây được gọi là function scope.

function functionScopeExample() {
  var functionVar = "I am inside a function";
  console.log(functionVar); // Output: I am inside a function
}

functionScopeExample();
console.log(functionVar); // Error: functionVar is not defined

3. Block Scope

Trong ES6, letconst giới thiệu khái niệm block scope. Một block được định nghĩa bởi cặp dấu ngoặc nhọn {} và các biến được khai báo bằng let hoặc const chỉ tồn tại trong block đó.

{
  let blockVar = "I am inside a block";
  console.log(blockVar); // Output: I am inside a block
}
console.log(blockVar); // Error: blockVar is not defined

Block scope cũng áp dụng cho các cấu trúc điều khiển như if, for, while.

if (true) {
  let ifBlockVar = "I am inside an if block";
  console.log(ifBlockVar); // Output: I am inside an if block
}
console.log(ifBlockVar); // Error: ifBlockVar is not defined

for (let i = 0; i < 3; i++) {
  console.log(i); // Output: 0, 1, 2
}
console.log(i); // Error: i is not defined

Tổng Kết

  1. Global Scope: Biến có global scope được truy cập từ bất kỳ đâu trong mã.
  2. Function Scope: Biến có function scope chỉ có thể được truy cập từ bên trong hàm mà nó được khai báo.
  3. Block Scope: Biến có block scope chỉ có thể được truy cập từ bên trong khối mã {} mà nó được khai báo, đặc biệt khi sử dụng letconst.

Hiểu rõ về scope là quan trọng để viết mã JavaScript rõ ràng và tránh các lỗi không mong muốn do truy cập hoặc ghi đè lên các biến. Điều này cũng giúp bạn quản lý tốt hơn việc sử dụng bộ nhớ và tránh rò rỉ bộ nhớ.

Comments