Phạm vi biến JavaScript

Trong hướng dẫn này, bạn sẽ tìm hiểu về phạm vi biến trong JavaScript với sự trợ giúp của các ví dụ.

Phạm vi đề cập đến tính khả dụng của các biến và hàm trong các phần nhất định của mã.

Trong JavaScript, một biến có hai loại phạm vi:

  1. Phạm vi toàn cầu
  2. Phạm vi địa phương

Phạm vi toàn cầu

Một biến được khai báo ở đầu chương trình hoặc bên ngoài một hàm được coi là một biến phạm vi toàn cục.

Hãy xem một ví dụ về một biến phạm vi toàn cục.

// program to print a text 
let a = "hello";

function greet () {
    console.log(a);
}

greet(); // hello

Trong chương trình trên, biến a được khai báo ở đầu chương trình và là biến toàn cục. Nó có nghĩa là biến acó thể được sử dụng ở bất kỳ đâu trong chương trình.

Giá trị của một biến toàn cục có thể được thay đổi bên trong một hàm. Ví dụ,

// program to show the change in global variable
let a = "hello";

function greet() {
    a = 3;
}

// before the function call
console.log(a);

//after the function call
greet();
console.log(a); // 3

Trong chương trình trên, biến a là một biến toàn cục. Giá trị của a làXin chào. Sau đó, biến a được truy cập bên trong một hàm và giá trị thay đổi thành 3.

Do đó, giá trị của một thay đổi sau khi thay đổi nó bên trong hàm.

Lưu ý : Bạn nên tránh sử dụng các biến toàn cục vì giá trị của một biến toàn cục có thể thay đổi trong các khu vực khác nhau trong chương trình. Nó có thể giới thiệu các kết quả chưa biết trong chương trình.

Trong JavaScript, một biến cũng có thể được sử dụng mà không cần khai báo. Nếu một biến được sử dụng mà không khai báo, biến đó sẽ tự động trở thành một biến toàn cục.

Ví dụ,

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello

Trong chương trình trên, biến a là một biến toàn cục.

Nếu biến được khai báo bằng cách sử dụng let a = "hello", chương trình sẽ xuất hiện một lỗi.

Lưu ý : Trong JavaScript, có "strict mode";một biến không thể được sử dụng nếu không khai báo nó. Để tìm hiểu thêm về nghiêm ngặt, hãy truy cập JavaScript Nghiêm ngặt .

Phạm vi địa phương

Một biến cũng có thể có phạm vi cục bộ, tức là nó chỉ có thể được truy cập trong một hàm.

Ví dụ 1: Biến phạm vi cục bộ

// program showing local scope of a variable
let a = "hello";

function greet() {
    let b = "World"
    console.log(a + b);
}

greet();
console.log(a + b); // error

Đầu ra

helloWorld
Uncaught ReferenceError: b is not defined

Trong chương trình trên, biến a là biến toàn cục và biến b là biến cục bộ. Biến b chỉ có thể được truy cập bên trong hàm chào . Do đó, khi chúng ta cố gắng truy cập vào biến b bên ngoài hàm, một lỗi sẽ xảy ra.

cho phép là Block Scoped

Các lettừ khóa là khối scoped (biến thể được truy cập chỉ trong khối ngay lập tức).

Ví dụ 2: Biến phạm vi khối

// program showing block-scoped concept
// global variable
let a = 'Hello';

function greet() {

    // local variable
    let b = 'World';

    console.log(a + ' ' + b);

    if (b == 'World') {

        // block-scoped variable
        let c = 'hello';

        console.log(a + ' ' + b + ' ' + c);
    }

    // variable c cannot be accessed here
    console.log(a + ' ' + b + ' ' + c);
}

greet();

Đầu ra

Hello World
Hello World hello
Uncaught ReferenceError: c is not defined

Trong chương trình trên, biến

  • a is a global variable. It can be accessed anywhere in the program.
  • b is a local variable. It can be accessed only inside the function greet.
  • c is a block-scoped variable. It can be accessed only inside the if statement block.

Do đó, trong chương trình trên, hai phần đầu tiên console.log()hoạt động mà không có vấn đề gì.

Tuy nhiên, chúng tôi đang cố gắng truy cập biến phạm vi khối c bên ngoài khối trong phần thứ ba console.log(). Điều này sẽ tạo ra một lỗi.

Lưu ý : Trong JavaScript, varlà phạm vi chức năng và phạm vi letkhối. Nếu bạn cố gắng sử dụng var c = 'hello';bên trong ifcâu lệnh trong chương trình trên, toàn bộ chương trình sẽ hoạt động, vì c được coi như một biến cục bộ.

Để tìm hiểu thêm về letso sánh var, hãy truy cập JavaScript let vs var .









Gõ tìm kiếm nhanh...