Các câu lệnh có nằm trong phạm vi javascript không?

Giống như tất cả các bài đăng blog hay, bài này lần đầu tiên đến với tôi khi tôi đang đập đầu vào bàn phím, chửi rủa và hét lên để có một người mẹ ôm tôi trong khi tôi lảm nhảm một cách không mạch lạc về sự cố do mã dường như vô nghĩa gây ra

Vì các biến cục bộ chỉ được nhận dạng bên trong các hàm của chúng, các biến có cùng tên có thể được sử dụng trong các hàm khác nhau

Biến cục bộ được tạo khi chức năng bắt đầu và bị xóa khi chức năng hoàn thành


Phạm vi chức năng

JavaScript có phạm vi chức năng. Mỗi chức năng tạo ra một phạm vi mới

Các biến được xác định bên trong hàm không thể truy cập (hiển thị) từ bên ngoài hàm

Các biến được khai báo với

// 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
6,
// 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
7 và
// 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
8 hoàn toàn giống nhau khi được khai báo bên trong một hàm

Tất cả đều có Phạm vi chức năng

function myFunction() {
  var carName = "Volvo";
}

function myFunction() {
  let carName = "Volvo";
}

function myFunction() {
  const carName = "Volvo";
}


Biến JavaScript toàn cầu

Một biến được khai báo bên ngoài một hàm, trở thành TOÀN CẦU

Thí dụ

let carName = "Volvo";
// mã ở đây có thể sử dụng carName

function myFunction() {
// mã ở đây cũng có thể sử dụng carName
}

Tự mình thử »

Một biến toàn cầu có phạm vi toàn cầu

Tất cả các tập lệnh và chức năng trên một trang web đều có thể truy cập nó.  


Phạm vi toàn cầu

Các biến được khai báo Globally (ngoài bất kỳ chức năng nào) có Global Scope

Biến toàn cục có thể được truy cập từ mọi nơi trong chương trình JavaScript

Các biến được khai báo với

// 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
6,
// 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
7 và
// 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
8 hoàn toàn giống nhau khi khai báo bên ngoài khối

Tất cả đều có Phạm vi toàn cầu

biến x = 2;

cho x = 2;

hằng x = 2;


Biến JavaScript

Trong JavaScript, các đối tượng và hàm cũng là các biến

Phạm vi xác định khả năng truy cập của các biến, đối tượng và chức năng từ các phần khác nhau của mã



Tự động toàn cầu

Nếu bạn gán giá trị cho một biến chưa được khai báo, nó sẽ tự động trở thành biến TOÀN CẦU

Ví dụ mã này sẽ khai báo một biến toàn cục

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
2, ngay cả khi giá trị được gán bên trong một hàm

Như bạn có thể thấy, giá trị

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
3 phải được ghi vào biến
function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
4. Tuy nhiên, nếu bạn chạy mã này, thì một lỗi sẽ được hiển thị trong bảng điều khiển

Vấn đề là các biến được khai báo bên trong dấu ngoặc nhọn chỉ hiển thị bên trong các dấu ngoặc đó và không hiển thị bên ngoài. Nói một cách khoa học, ở đây chúng ta đang nói về phạm vi biến

Có thể nói rằng phạm vi của các biến được khai báo bên trong dấu ngoặc nhọn chỉ là các dấu ngoặc nhọn đó. Tuy nhiên, nếu một biến được khai báo bên ngoài dấu ngoặc nhọn, thì nó sẽ hiển thị cả bên trong và bên ngoài chúng.

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
5

Thí dụ

Trong ví dụ sau, biến

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
4 được gán giá trị
function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
7 hoặc giá trị
function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
8 tùy thuộc vào điều kiện

function greet() {
    a = "hello"
}

greet();

console.log(a); // hello
9

Tuy nhiên, nếu bạn chạy mã này, một lỗi sẽ được hiển thị trong bảng điều khiển. Như bạn đã hiểu, đó là tất cả về khả năng hiển thị của các biến. Để giải quyết vấn đề, hãy khai báo một biến ngoài điều kiện

// 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
0

Tác giả của mã bên dưới muốn thực hiện xác thực độ tuổi để đạt được 31 năm. Tuy nhiên, mã này không hoạt động. Vui lòng sửa lỗi của tác giả mã. Đây là mã có vấn đề

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

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

// 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

// 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
2 có 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à 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 a thay đổi sau khi thay đổi nó bên trong hàm

Ghi chú. Nên tránh sử dụng biến toàn cục vì giá trị của biến toàn cục có thể thay đổi ở 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 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à biến toàn cục

Nếu biến được khai báo bằng cách sử dụng

// 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
3, chương trình sẽ báo lỗi

Ghi chú. Trong JavaScript, có

// 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
4 trong đó một biến không thể được sử dụng mà không khai báo nó. Để tìm hiểu thêm về nghiêm ngặt, hãy truy cập JavaScript Strict


Phạm vi địa phương

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

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 hello. Do đó, khi chúng tôi cố gắng truy cập biến b bên ngoài hàm, sẽ xảy ra lỗi


hãy để Block Phạm vi

Từ khóa

// 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
0 có phạm vi khối (biến chỉ có thể được truy cập 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 là biến toàn cục. Nó có thể được truy cập bất cứ nơi nào trong chương trình
  • b là một biến cục bộ. Nó chỉ có thể được truy cập bên trong hàm
    // 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
    1
  • c là một biến trong phạm vi khối. Nó chỉ có thể được truy cập bên trong khối câu lệnh
    // 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
    2

Do đó, trong chương trình trên, hai

// 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
3 đầu tiên hoạt động bình thường

Tuy nhiên, chúng tôi đang cố gắng truy cập biến c trong phạm vi khối bên ngoài khối trong

// 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
3 thứ ba. Điều này sẽ ném một lỗi


Ghi chú. Trong JavaScript,

// 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
5 là phạm vi chức năng và
// 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
0 là phạm vi khối. Nếu bạn cố gắng sử dụng
// 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
7 bên trong câu lệnh
// 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
2 trong chương trình trên, thì toàn bộ chương trình sẽ hoạt động, vì c được coi là biến cục bộ

Các câu lệnh IF có nằm trong phạm vi không?

Nếu bạn chưa từng gặp thuật ngữ này trước đây, thì phạm vi của một biến là mã mà nó có thể truy cập được trong. Các biến được xác định trong hàm, câu lệnh if hoặc khối điều khiển khác nằm trong phạm vi của khối đó .

Phạm vi hợp lệ của một biến trong JavaScript là gì?

Các biến JavaScript có phạm vi khác nhau, chúng là. Phạm vi toàn cầu . Phạm vi cục bộ . Phạm vi khối .

Là khối JavaScript

JavaScript có phạm vi chức năng . Mỗi chức năng tạo ra một phạm vi mới. Các biến được xác định bên trong hàm không thể truy cập (hiển thị) từ bên ngoài hàm. Các biến được khai báo với var, let và const khá giống nhau khi được khai báo bên trong một hàm.

JavaScript sử dụng phạm vi nào?

JavaScript sử dụng phạm vi từ vựng có nghĩa là phạm vi của các biến được xác định tại thời điểm biên dịch. Công cụ JavaScript sử dụng môi trường từ vựng để lưu trữ các biến trong quá trình thực thi chương trình.