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ậpI 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 defined
avascript 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ã ở đây có thể sử dụng Carname
hàm myFunction [] {& nbsp; Carname = "Volvo";}
- chế độ nghiêm ngặt
- Tất cả các trình duyệt hiện đại hỗ trợ chạy JavaScript trong "Chế độ nghiêm ngặt".
- Bạn sẽ tìm hiểu thêm về cách sử dụng chế độ nghiêm ngặt trong một chương sau của hướng dẫn này.
Trong "Chế độ nghiêm ngặt", các biến không được khai báo không tự động toàn cầu.
Các biến toàn cầu trong HTMLGlobal Scope and Function Scope.
Với JavaScript, phạm vi toàn cầu là môi trường JavaScript.
Trong HTML, phạm vi toàn cầu là đối tượng cửa sổ.Block Scope in JavaScript.
Các biến toàn cầu được xác định với từ khóa var
thuộc về đối tượng cửa sổ:
Thí dụ
{& nbsp; & nbsp; Let x = 2; } // x không thể được sử dụng ở đây
let x = 2;
}
// x can NOT be used here
Các biến được khai báo với từ khóa var
không thể có phạm vi khối.
Các biến được khai báo bên trong một khối {} có thể được truy cập từ bên ngoài khối.
Thí dụ
{& nbsp; & nbsp; var x = 2; } // x có thể được sử dụng ở đây
var x = 2;
}
// x CAN be used here
Phạm vi địa phương
Các biến được khai báo trong hàm JavaScript, trở thành cục bộ cho hàm. LOCAL to the function.
Thí dụ
// Mã ở đây không thể sử dụng Carname
hàm myFunction [] {& nbsp; & nbsp; let carname = "volvo"; & nbsp; // Mã ở đây có thể sử dụng carname}
let carName = "Volvo";
// code here CAN use carName
}
// Mã ở đây không thể sử dụng Carname
Hãy tự mình thử »
Các biến cục bộ có phạm vi chức năng:Function Scope:
Chúng chỉ có thể được truy cập từ bên trong chức năng.
Vì các biến cục bộ chỉ được nhận ra 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 chức năng khác nhau.
Các biến cục bộ được tạo khi một hàm bắt đầu và xóa khi hàm được hoàn thành.
Phạm vi chức năng
JavaScript có phạm vi chức năng: Mỗi hàm tạo ra một phạm vi mới.
Các biến được xác định bên trong một hàm không thể truy cập [có thể nhìn thấy] 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.
Tất cả đều có phạm vi chức năng:Function Scope:
hàm myFunction [] {& nbsp; var carname = "volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
var carName = "Volvo"; // Function Scope
}
hàm myFunction [] {& nbsp; Đặt carname = "Volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
let carName = "Volvo"; // Function Scope
}
hàm myFunction [] {& nbsp; const carname = "volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
const carName = "Volvo"; // Function Scope
}
Các biến JavaScript toàn cầu
Một biến được tuyên bố bên ngoài một chức năng, trở thành toàn cầu.GLOBAL.
Thí dụ
Hãy để Carname = "Volvo"; // Mã ở đây có thể sử dụng Carname
// code here can use carName
function myFunction [] {// mã ở đây cũng có thể sử dụng carname}
// code here can also use carName
}
Hãy tự mình thử »
Các biến cục bộ có phạm vi chức năng:Global Scope:
Chúng chỉ có thể được truy cập từ bên trong chức năng.
Vì các biến cục bộ chỉ được nhận ra 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 chức năng khác nhau.
Các biến cục bộ được tạo khi một hàm bắt đầu và xóa khi hàm được hoàn thành.Globally [outside any function] have Global Scope.
Phạm vi chức năng variables can be accessed from anywhere in a JavaScript program.
JavaScript có phạm vi chức năng: Mỗi hàm tạo ra một phạm vi mới.
Các biến được xác định bên trong một hàm không thể truy cập [có thể nhìn thấy] từ bên ngoài hàm.Global Scope:
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.
Tất cả đều có phạm vi chức năng:
hàm myFunction [] {& nbsp; var carname = "volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
hàm myFunction [] {& nbsp; Đặt carname = "Volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
hàm myFunction [] {& nbsp; const carname = "volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
Các biến JavaScript toàn cầu
Một biến được tuyên bố bên ngoài một chức năng, trở thành toàn cầu.
Hãy để Carname = "Volvo"; // Mã ở đây có thể sử dụng CarnameGLOBAL variable.
function myFunction [] {// mã ở đây cũng có thể sử dụng carname}
Thí dụ
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 có thể truy cập nó. & NBSP;
Phạm vi toàn cầu
carName = "Volvo";
}
Hãy tự mình thử »
Các biến cục bộ có phạm vi chức năng:
Chúng chỉ có thể được truy cập từ bên trong chức năng.
Vì các biến cục bộ chỉ được nhận ra 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 chức năng khác nhau.
Các biến cục bộ được tạo khi một hàm bắt đầu và xóa khi hàm được hoàn thành.
Phạm vi chức năng
JavaScript có phạm vi chức năng: Mỗi hàm tạo ra một phạm vi mới.
Các biến được xác định bên trong một hàm không thể truy cập [có thể nhìn thấy] 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.
Tất cả đều có phạm vi chức năng:
Thí dụ
hàm myFunction [] {& nbsp; var carname = "volvo"; & nbsp; & nbsp; // Phạm vi chức năng}
// code here can not use window.carName
Hãy tự mình thử »
Các biến cục bộ có phạm vi chức năng:
Chúng chỉ có thể được truy cập từ bên trong chức năng.
Vì các biến cục bộ chỉ được nhận ra 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 chức năng khác nhau.
Any function, including the window
object, can overwrite your global variables and functions.
Các biến cục bộ được tạo khi một hàm bắt đầu và xóa khi hàm được hoàn thành.
Phạm vi chức năng
JavaScript có phạm vi chức năng: Mỗi hàm tạo ra một phạm vi mới.
Các biến được xác định bên trong một hàm không thể truy cập [có thể nhìn thấy] 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.
Tất cả đều có phạm vi chức năng: