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, let
và const
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
- Global Scope: Biến có global scope được truy cập từ bất kỳ đâu trong mã.
- 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.
- 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ụnglet
vàconst
.
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