Hai loại phạm vi trong JavaScript là gì?

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




    

Uncaught ReferenceError: x is not defined
2

10
undefined
Uncaught ReferenceError: a is not defined
2

    

30
20
6

30
20
7

đầ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 defined
8    0

10
undefined
Uncaught ReferenceError: a is not defined
8var     3
10
undefined
Uncaught ReferenceError: a is not defined
6     5

    6

    7    8

    7// Global Scoped Variable0

10
undefined
Uncaught ReferenceError: a is not defined
8
Uncaught ReferenceError: x is not defined
2

10
undefined
Uncaught ReferenceError: a is not defined
2

10
undefined
Uncaught ReferenceError: a is not defined
8// Global Scoped Variable5

10
undefined
Uncaught ReferenceError: a is not defined
8// Global Scoped Variable7

    

Uncaught ReferenceError: x is not defined
2

    0

        2

        4

10
undefined
Uncaught ReferenceError: a is not defined
2

        7

        9

    var1

10
undefined
Uncaught ReferenceError: a is not defined
2

        7

    var6

    var8

30
20
7

đầ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