Chúng ta có thể khai báo biến toàn cục bên trong một hàm trong javascript không?

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 biến globalVariable, thì bạn sẽ mất quyền truy cập vào giá trị của biến globalVariable bên trong phạm vi của hàm

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

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

Tuy nhiên, bạn thực sự nhận được một lỗi. Javascript sẽ cho bạn biết rằng globalVariable không được xác định ReferenceError:globalVariable is not defined

Giải trình

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

Kết quả là trong 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 đưa lên đầu phạm vi (còn gọi là bên trong hàm)

Các biến toàn cục được khai báo bên ngoài một hàm để có thể truy cập trong suốt chương trình, trong khi các biến cục bộ được lưu trữ bên trong một hàm bằng cách sử dụng var chỉ để sử dụng trong phạm vi của hàm đó. Nếu bạn khai báo một biến mà không sử dụng var, ngay cả khi nó nằm trong một hàm, nó vẫn sẽ được coi là biến toàn cục

var x = 5; // global

function someThing(y) {
  var z = x + y;
  console.log(z);
}

function someThing(y) {
  x = 5; // still global!
  var z = x + y;
  console.log(z);
}


function someThing(y) {
  var x = 5; // local
  var z = x + y;
  console.log(z);
}

Biến toàn cục cũng là một đối tượng của phạm vi hiện tại, chẳng hạn như cửa sổ trình duyệt

var dog = “Fluffy”;
console.log(dog); // Fluffy;

var dog = “Fluffy”;
console.log(window.dog); // Fluffy

Đó là một phương pháp hay nhất để giảm thiểu các biến toàn cầu. Vì biến có thể được truy cập ở bất kỳ đâu trong chương trình nên chúng có thể gây ra hành vi lạ

Người giới thiệu

  • var -Javascript. MDN
  • Bạn không biết JavaScript. Phạm vi và Đóng cửa

Sự khác biệt giữa var toàn cầu và cửa sổ là gì. biến trong javascript?

Phạm vi của các biến JavaScript là toàn cầu hoặc cục bộ. Biến toàn cục được khai báo BÊN NGOÀI hàm và giá trị của nó có thể truy cập/thay đổi được trong suốt chương trình

Bạn LUÔN LUÔN sử dụng var để khai báo các biến của mình (để tạo cục bộ) nếu không nó sẽ cài đặt TOÀN CẦU

Cẩn thận với các biến toàn cầu vì chúng có rủi ro. Hầu hết thời gian bạn nên sử dụng bao đóng để khai báo các biến của mình. Thí dụ

(function(){
  var myVar = true;
})();

Thêm thông tin

  • Hướng dẫn trực quan về định nghĩa và phạm vi biến JavaScript
  • Giới thiệu về định nghĩa biến JavaScript và cẩu

QUẢNG CÁO

QUẢNG CÁO


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Trong JavaScript, khả năng truy cập của một biến được xác định bởi phạm vi của nó (W3Schools). Theo nguyên tắc chung, một biến có thể có ba phạm vi. phạm vi khối, phạm vi chức năng và phạm vi toàn cầu

Các biến có phạm vi khối được khai báo bằng câu lệnh let và chỉ có thể được truy cập trong khối

Các biến có phạm vi chức năng được khai báo bằng câu lệnh var trong hàm và chỉ có thể được truy cập trong hàm

Câu hỏi là, làm thế nào để bạn khai báo một biến toàn cục?

Cách khai báo biến toàn cục trong JavaScript

Có hai cách để tạo biến toàn cục trong JavaScript. Một là khai báo nó bên ngoài một chức năng. Trong trường hợp này, nó sẽ tự động được gán phạm vi toàn cầu. Cách khác là khai báo nó như một thuộc tính của đối tượng window từ bên trong một hàm

Từ Bên Ngoài Chức Năng

Một biến được khai báo bên ngoài hàm sẽ tự động trở thành biến toàn cục

// Declare global variable
var myName = "Jim";

// Reference variable within function
function printName() {
  console.log('Hey there! My name\'s ' + myName + '.');
}
printName(); // Hey there! My name's Jim.

Từ bên trong chức năng

Để khai báo một biến toàn cục từ bên trong một hàm, hãy khai báo nó như một thuộc tính của đối tượng window

// Declare global variable inside function
function saveName() {
  window.myName = "Jim";
}

// Reference the variable outside the function
console.log('Hey there! My name\'s ' + myName + '.'); // Hey there! My name's Jim.

Khi bạn đã khai báo biến của mình là thuộc tính của đối tượng cửa sổ, bạn có thể tham chiếu biến đó từ bên trong và bên ngoài hàm của mình

Chỉ cần đảm bảo khai báo biến trước khi bạn tham chiếu nó. Nếu không, bạn sẽ gặp phải lỗi không xác định chức năng đáng sợ

Tôi có thể khai báo biến toàn cục bên trong hàm JavaScript không?

Khai báo biến toàn cục JavaScript trong hàm . Ví dụ. cửa sổ. To declare JavaScript global variables inside function, you need to use window object. For example: window.

Bạn có thể khai báo biến toàn cục trong hàm không?

Thông thường, khi bạn tạo một biến bên trong một hàm, biến đó là cục bộ và chỉ có thể được sử dụng bên trong hàm đó. Để tạo một biến toàn cục bên trong một hàm, bạn có thể sử dụng từ khóa toàn cục .

Tại sao tôi không thể truy cập các biến toàn cục bên trong hàm của mình trong JavaScript?

Giải thích. Điều này là do bất kể bạn xác định biến của mình ở đâu, nó sẽ nâng biến đó lên đầu phạm vi bao quanh của chúng . Điều đó có nghĩa là, nếu một biến được xác định trong một phạm vi, javascript sẽ di chuyển biến đó lên đầu phạm vi.

Bạn có thể khai báo một biến bên trong một hàm không?

Phạm vi là một vùng của chương trình và nói chung có ba vị trí, nơi các biến có thể được khai báo. Bên trong một hàm hay một khối được gọi là biến cục bộ , trong định nghĩa các tham số của hàm được gọi là tham số hình thức. Bên ngoài tất cả các hàm được gọi là biến toàn cục.