Phạm vi là bối cảnh thực thi hiện tại trong đó các giá trị và biểu thức "hiển thị" hoặc có thể được tham chiếu. Nếu một biến hoặc biểu thức không nằm trong phạm vi hiện tại, nó sẽ không có sẵn để sử dụng. Các phạm vi cũng có thể được xếp lớp trong một hệ thống phân cấp, để các phạm vi con có quyền truy cập vào các phạm vi cha, nhưng không phải ngược lại
JavaScript có các loại phạm vi sau
- Phạm vi toàn cầu. Phạm vi mặc định cho tất cả mã chạy trong chế độ tập lệnh
- phạm vi mô-đun. Phạm vi mã chạy trong chế độ mô-đun
- phạm vi chức năng. Phạm vi được tạo bằng một chức năng
Ngoài ra, các biến được khai báo với let
hoặc const
có thể thuộc phạm vi bổ sung
- phạm vi khối. Phạm vi được tạo bằng một cặp dấu ngoặc nhọn [một khối]
Một hàm tạo ra một phạm vi, do đó [ví dụ] một biến được xác định riêng trong hàm không thể được truy cập từ bên ngoài hàm hoặc bên trong các hàm khác. Ví dụ, sau đây là không hợp lệ
function exampleFunction[] {
const x = "declared inside function"; // x can only be used in exampleFunction
console.log["Inside function"];
console.log[x];
}
console.log[x]; // Causes error
Tuy nhiên, đoạn mã sau hợp lệ do biến được khai báo bên ngoài hàm, làm cho nó trở nên toàn cục
Trong bài viết này, chúng tôi sẽ cố gắng hiểu phạm vi của một biến cũng như chức năng của nó [hoặc một phương thức] là gì. Chúng ta sẽ xem Chuỗi phạm vi là gì với sự trợ giúp của một số ví dụ mã hóa
Trước tiên chúng ta hãy xem phần sau đây mô tả Phạm vi.
Phạm vi
- Phạm vi trong JavaScript thực sự xác định khả năng truy cập của các biến và hàm ở các phần khác nhau trong mã hoặc chương trình của riêng một người
- Nói cách khác, Scope sẽ giúp chúng ta xác định một phần nhất định của mã hoặc chương trình, biến hoặc chức năng nào có thể truy cập và biến hoặc chức năng nào không thể truy cập.
- Trong chính phạm vi, một biến hoặc một hàm hoặc một phương thức có thể được truy cập. Ngoài phạm vi được chỉ định của một biến hoặc chức năng, dữ liệu không thể được truy cập
- Có ba loại phạm vi có sẵn trong JavaScript. Phạm vi toàn cục, Phạm vi cục bộ/chức năng và Phạm vi khối. Chúng ta hãy cố gắng hiểu ngắn gọn từng người trong số họ trong phần sau
Phạm vi toàn cầu
- Các biến hoặc hàm [hoặc phương thức] được khai báo trong một không gian tên chung [như khu vực hoặc vị trí] được xác định là Phạm vi toàn cầu.
- Điều đó có nghĩa là tất cả các biến có phạm vi toàn cầu có thể được truy cập dễ dàng từ bất kỳ đâu trong mã hoặc chương trình
ví dụ 1. Trong ví dụ này, chúng ta sẽ khai báo một biến toàn cục mà chúng ta sẽ sử dụng trong phần sau của mã. Chúng ta sẽ gọi biến đó trong một hàm. Chúng ta sẽ gọi hàm đó bên trong một hàm khác và sau đó chúng ta sẽ gọi hàm khác đó để xem kết quả
Javascript
// Global Scoped Variable
var
global_variable =
10 undefined Uncaught ReferenceError: a is not defined0
10 undefined Uncaught ReferenceError: a is not defined1
10 undefined Uncaught ReferenceError: a is not defined2
10 undefined Uncaught ReferenceError: a is not defined4
10 undefined Uncaught ReferenceError: a is not defined6
10 undefined Uncaught ReferenceError: a is not defined7
10 undefined Uncaught ReferenceError: a is not defined8
10 undefined Uncaught ReferenceError: a is not defined9
Uncaught ReferenceError: x is not defined0
Uncaught ReferenceError: x is not defined2
10 undefined Uncaught ReferenceError: a is not defined2
Uncaught ReferenceError: x is not defined5
10 undefined Uncaught ReferenceError: a is not defined6
Uncaught ReferenceError: x is not defined8
10 undefined Uncaught ReferenceError: a is not defined8
10 undefined Uncaught ReferenceError: a is not defined9
30 201
Uncaught ReferenceError: x is not defined2
10 undefined Uncaught ReferenceError: a is not defined2
30 206
30 207
đầu ra
GeeksforGeeks
Phạm vi cục bộ hoặc chức năng
- Các biến được khai báo bên trong một hàm hoặc một phương thức có Phạm vi cục bộ hoặc hàm
- Nó có nghĩa là các biến hoặc hàm được khai báo bên trong hàm hoặc một phương thức chỉ có thể được truy cập trong hàm đó
ví dụ 2. Trong ví dụ này, chúng ta sẽ khai báo hàm main sẽ bao gồm một biến cục bộ/hàm phạm vi. Chúng ta sẽ khai báo một hàm lồng nhau sẽ xem xét biến đó và thực hiện phép toán nhân trên nó. Chúng ta sẽ gọi hàm lồng nhau bên trong hàm chính và sau đó gọi hàm chính bên ngoài khai báo của nó
Sau đó, cuối cùng, chúng ta sẽ gọi biến cục bộ/hàm có phạm vi cùng với hàm có phạm vi cục bộ/hàm để xem chúng sẽ hiển thị đầu ra nào khi gọi
Javascript
10 undefined Uncaught ReferenceError: a is not defined6
110 undefined Uncaught ReferenceError: a is not defined2
10 undefined Uncaught ReferenceError: a is not defined8
410 undefined Uncaught ReferenceError: a is not defined8
var
710 undefined Uncaught ReferenceError: a is not defined2
10 undefined Uncaught ReferenceError: a is not defined8
010 undefined Uncaught ReferenceError: a is not defined8
var
310 undefined Uncaught ReferenceError: a is not defined6
5
6
7
8
7// Global Scoped Variable
0
10 undefined Uncaught ReferenceError: a is not defined8
Uncaught ReferenceError: x is not defined2
10 undefined Uncaught ReferenceError: a is not defined2
10 undefined Uncaught ReferenceError: a is not defined8
// Global Scoped Variable
510 undefined Uncaught ReferenceError: a is not defined8
// Global Scoped Variable
7
Uncaught ReferenceError: x is not defined2
0
2
4
10 undefined Uncaught ReferenceError: a is not defined2
7
9
var
1
10 undefined Uncaught ReferenceError: a is not defined2
7
var
6
var
8
30 207
đầu ra
10 undefined Uncaught ReferenceError: a is not defined
Phạm vi chặn
- Phạm vi khối có liên quan đến các biến hoặc hàm được khai báo bằng let và const vì var không có phạm vi khối
- Phạm vi khối cho chúng ta biết rằng các biến được khai báo bên trong một khối { }, chỉ có thể được truy cập trong khối đó, không phải bên ngoài khối đó
ví dụ 3. Trong ví dụ này, chúng ta sẽ khai báo một khối bằng dấu ngoặc nhọn “{ }”, và bên trong khối đó, chúng ta sẽ khai báo một biến có giá trị nhất định trong đó. Chúng tôi sẽ gọi biến đó bên ngoài phạm vi bị chặn để xem đầu ra mà nó thực sự hiển thị khi gọi
Javascript
global_variable =
2
10 undefined Uncaught ReferenceError: a is not defined8
global_variable =
4
Uncaught ReferenceError: x is not defined2
global_variable =
8
10 undefined Uncaught ReferenceError: a is not defined00
10 undefined Uncaught ReferenceError: a is not defined02
10 undefined Uncaught ReferenceError: a is not defined04
30 207
đầu ra
Uncaught ReferenceError: x is not defined
chuỗi phạm vi
- Công cụ JavaScript sử dụng phạm vi để tìm ra vị trí chính xác hoặc khả năng truy cập của các biến và quy trình cụ thể đó được gọi là Chuỗi phạm vi
- Chuỗi phạm vi có nghĩa là một biến có phạm vi [có thể là phạm vi toàn cầu hoặc cục bộ/hàm hoặc khối] được sử dụng bởi một biến hoặc hàm khác có phạm vi khác [có thể là phạm vi toàn cầu hoặc cục bộ/hàm hoặc khối]
- Sự hình thành chuỗi hoàn chỉnh này tiếp tục và dừng lại khi người dùng muốn dừng nó theo yêu cầu
Ví dụ 4. Trong ví dụ này, trước tiên chúng ta sẽ khai báo một biến phạm vi toàn cầu mà chúng ta sẽ sử dụng trong phần sau của mã, sau đó chúng ta sẽ khai báo hàm chính bên trong mà chúng ta sẽ thực hiện một số nội dung. Chúng ta sẽ khai báo một biến phạm vi cục bộ/hàm khác bên trong hàm chính đó và ngay sau đó chúng ta sẽ khai báo hai hàm lồng nhau [có phạm vi hàm cục bộ/hàm] trong chính hàm chính đó