Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Khi bạn khai báo biến toàn cầu trong JavaScript, bạn có thể truy cập nó từ bên trong một chức năng như vậy:

Tuy nhiên, nếu bạn tạo một biến bên trong phạm vi của hàm có cùng tên với GlobalVarable, bạn sẽ mất quyền truy cập vào giá trị của GlobalVarable bên trong phạm vi của hàm.

Nếu bạn đọc mã ở trên theo thứ tự dòng được thực thi, thì đây là những gì bạn nghĩ sẽ xảy ra:

  • Tạo GlobalVarable và gán nó một giá trị.
  • Gọi một số chức năng.
  • Giá trị nhật ký của globalVariable vào bảng điều khiển. Bạn mong đợi điều này sẽ đăng nhập I am a globalvariable
  • Tạo một biến cục bộ mới với cùng tên với GlobalVarable. globalVariable và cho nó một giá trị.
  • Đăng nhập biến cục bộ mới này. Bạn có thể mong đợi I am a local variable as the same name as globalVariable sẽ được in.

Tuy nhiên, bạn thực sự gặp lỗi. JavaScript sẽ cho bạn biết rằng GlobalVarable không được xác định ReferenceError:globalVariable is not definedavascript will tell you that globalVariable is not defined ReferenceError:globalVariable is not defined

Explanation:

Điều này là do bất kể nơi bạn xác định biến của mình, nó sẽ kéo biến lên đầu phạm vi kèm theo của chúng. Có nghĩa là, nếu một biến được xác định trong một phạm vi, JavaScript di chuyển tất cả các cách ở đầu phạm vi. Đây là cùng một lý do bạn có thể gọi một hàm trong JavaScript trên dòng 1 mặc dù hàm không được xác định cho đến dòng 2.

Kết quả là ví dụ thứ hai, bạn mất quyền truy cập vào globalVariable được xác định bên ngoài phạm vi của hàm, bởi vì nó đã được nâng lên trên cùng của phạm vi (còn gọi là bên trong hàm).

Mã cụ thể này có thể nằm trong phần thân của tệp HTML và mã này được thực thi trước khi các phần tử HTML cụ thể được tạo. Vì vậy, giá trị undefined được gán cho các giá trị đó.

Vì vậy, bạn có thể muốn di chuyển phần gán giá trị trong chính hàm.

var hours, mins, seconds;

function random()
{
    hours = document.getElementById("hrs").value;
    mins = document.getElementById("min").value; 
    seconds = document.getElementById("sec").value; 

    alert(hours);
    alert(mins);
    alert(seconds);
}

Lưu ý 1: Thông thường, nếu bạn không sử dụng thư viện như jQuery, mã như thế này sẽ được đặt trong onload. Đây là những gì MDN nói về, when onload is triggered Normally, if you don't use a library like jQuery, code like this is put in onload. This is what MDN has to say about, when onload is triggered

Sự kiện tải bắn vào cuối quá trình tải tài liệu. Tại thời điểm này, tất cả các đối tượng trong tài liệu đều nằm trong DOM và tất cả các hình ảnh và khung phụ đã hoàn thành tải.

Vì vậy, nếu bạn nhận được các giá trị từ các phần tử HTML, bạn có thể muốn đảm bảo rằng chúng tôi chỉ tìm nạp các giá trị từ chúng sau khi tài liệu HTML được hoàn thành được tải.

Lưu ý 2: Ngoài ra, bạn có thể muốn kiểm tra xem bạn có thực sự đặt globalVariable0 của các phần tử HTML với globalVariable1, globalVariable2 và globalVariable3 đúng cách. Các thuộc tính globalVariable4 và globalVariable0 thực sự được sử dụng cho các mục đích khác nhau. Apart from this, you might want to check if you have really set the globalVariable0 of the HTML elements with globalVariable1, globalVariable2 and globalVariable3 properly. globalVariable4 and globalVariable0 attributes are actually used for different purposes.

JavaScript là một ngôn ngữ đa năng nhưng chức năng. Các biến, là chìa khóa cho bất kỳ ngôn ngữ lập trình nào, có thể được sử dụng để lưu trữ các giá trị có thể được truy cập bất cứ lúc nào. Tuy nhiên, khi sử dụng các chức năng, có một số yếu tố liên quan đến phạm vi của hàm giới hạn khả năng truy cập một biến của chúng tôi.

Chúng tôi không thể truy cập một biến nếu nó nằm ngoài phạm vi của hàm và do đó các biến chúng tôi muốn sử dụng phải có phạm vi thích hợp khi khai báo. Để tránh các vấn đề liên quan đến phạm vi, điều quan trọng là phải hiểu các biến toàn cầu. Do đó, trong bài viết này, chúng ta sẽ thảo luận về các biến và phạm vi toàn cầu.

Phạm vi của một hàm có thể được coi là một ranh giới trong đó hàm có thể được truy cập. Tuy nhiên, trong khi một chức năng không biết những gì đang xảy ra ngoài các dấu ngoặc xoăn xác định nó, một biến toàn cầu có thể được truy cập từ bất cứ nơi nào trong chương trình.scope of a function can be considered as a boundary within which the function can be accessed. However, while a function does not know what is happening beyond the curly brackets that define it, a global variable can be accessed from anywhere in the program.

Cú pháp

Cú pháp được sử dụng để tạo một biến toàn cầu, được hiển thị bên dưới, không khác gì được sử dụng để tạo các biến khác.

Tuy nhiên, vị trí của tuyên bố này là rất quan trọng. Chúng tôi sẽ khám phá khái niệm này đầy đủ hơn bằng cách xem xét một số ví dụ.

Thí dụ

Đầu tiên, hãy để tạo ra một hàm gọi là phép trừ.

Phép trừ hàm (a, b) {& nbsp; var subnum = 23;} subtraction(a,b) {
 var subNum = 23;
}

Trong chức năng này, chúng tôi đã khởi tạo một biến và gán cho nó một giá trị. Bây giờ, chúng ta có thể cố gắng truy cập biến trong một chức năng khác, tức là phân chia và gọi chức năng đó.

Phân chia chức năng (a, b) {& nbsp; console.log (subnum);} division(a,b) {
 console.log(subNum);
}

phân công();();

Tuy nhiên, chúng tôi nhận được lỗi tham chiếu sau vì tên con biến không được xác định trong phạm vi chính xác.subName is not defined within the correct scope.

Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Lỗi này sẽ xảy ra bất cứ lúc nào chúng tôi cố gắng truy cập vào Subnum bên ngoài chức năng mà nó được xác định. Ví dụ:subNum outside the function in which it is defined. For example:

phép trừ hàm (a, b) {& nbsp; var subnum = 23;}; subtraction(a,b) {
 var subNum = 23;
};

Console.log (Subnum);log(subNum);

Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Ở đây, chúng tôi vẫn không thể truy cập biến vì nó bị giới hạn trong hàm trừ.

Tuy nhiên, hãy để Lừa xem những gì xảy ra nếu chúng ta tạo biến bên ngoài chức năng, ví dụ, ở đầu tập lệnh:

Bây giờ, hãy để cố gắng truy cập nó:

Như được hiển thị bên dưới, chúng tôi không còn nhận được lỗi tham chiếu.

Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Hơn nữa, GlobalVar nên có thể truy cập từ bất kỳ chức năng nào.globalVar should be accessible from any function.

Phân chia chức năng (a, b) {& nbsp; console.log (GlobalVar);} division(a,b) {
 console.log(globalVar);
}

phân công();();

Tuy nhiên, chúng tôi nhận được lỗi tham chiếu sau vì tên con biến không được xác định trong phạm vi chính xác.globalVar is still accessible.

Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Lỗi này sẽ xảy ra bất cứ lúc nào chúng tôi cố gắng truy cập vào Subnum bên ngoài chức năng mà nó được xác định. Ví dụ:

phép trừ hàm (a, b) {& nbsp; var subnum = 23;};

Console.log (Subnum);

Hướng dẫn javascript function cannot access global variable - chức năng javascript không thể truy cập biến toàn cầu

Ở đây, chúng tôi vẫn không thể truy cập biến vì nó bị giới hạn trong hàm trừ.

Chức năng JavaScript có thể truy cập biến toàn cầu không?

Các biến toàn cầu có thể được truy cập từ bất cứ đâu trong chương trình JavaScript. 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 ngoài một khối.. Variables declared with var , let and const are quite similar when declared outside a block.

Các vấn đề với các biến toàn cầu trong JavaScript là gì?

Điều này là do các biến toàn cầu dễ dàng được ghi đè bởi các tập lệnh khác.Các biến toàn cầu không tệ và thậm chí không phải là mối quan tâm bảo mật, nhưng nó không nên ghi đè lên các giá trị của một biến khác.Về việc sử dụng các biến toàn cầu hơn trong mã của chúng tôi, nó có thể dẫn đến vấn đề bảo trì.global variables are easily overwritten by other scripts. Global Variables are not bad and not even a security concern, but it shouldn't overwrite values of another variable. On the usage of more global variables in our code, it may lead to a maintenance issue.

Những gì có thể được thực hiện để tránh các biến toàn cầu trong JavaScript?

Làm thế nào để tránh các biến toàn cầu trong JavaScript ?..
Hàm nhân (x, y) {// Anti-vots: ngụ ý một biến toàn cầu.....
hàm nhân (x, y) {var result = x * y.....
function makeOmething () {// anti-vote: Không sử dụng.....
function makeOmething () {var a, b.....
var x = 10. Xóa x.....
x = "toàn cầu" // biến toàn cầu ..

Các chức năng toàn cầu có xấu trong JavaScript không?

Tránh toàn cầu.Các biến và tên chức năng toàn cầu là một ý tưởng cực kỳ tồi.Lý do là mọi tệp JavaScript có trong trang chạy trong cùng một phạm vi.Global variables and function names are an incredibly bad idea. The reason is that every JavaScript file included in the page runs in the same scope.