Phạm vi JavaScript
Phạm vi xác định khả năng tiếp cận (khả năng hiển thị) của các biến.
JavaScript có 3 loại phạm vi:
- Phạm vi khối
- Phạm vi chức năng
- Phạm vi toàn cầu
Phạm vi khối
Trước ES6 (2015), JavaScript chỉ có Phạm vi toàn cầu và Phạm vi chức năng .
ES6 đã giới thiệu hai từ khóa JavaScript mới quan trọng: let
và const
.
Hai từ khóa này cung cấp Phạm vi khối trong JavaScript.
Các biến được khai báo bên trong khối {} không thể được truy cập từ bên ngoài khối:
Thí dụ
{
let x = 2;
}
// x can NOT be used here
Các biến được khai báo với var
từ khóa KHÔNG được có phạm vi khối.
Các biến được khai báo bên trong khối {} có thể được truy cập từ bên ngoài khối.
Thí dụ
{
var x = 2;
}
// x CAN be used here
Phạm vi địa phương
Các biến được khai báo trong một hàm JavaScript, trở thành ĐỊA PHƯƠNG đối với hàm.
Thí dụ
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
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 hàm.
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.
Các biến cục bộ được tạo khi một hàm khởi động và bị xóa khi hoàn thành hàm.
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 một hàm không thể truy cập (nhìn thấy được) từ bên ngoài hàm.
Các biến được khai báo bằng var
và let
khá const
giống nhau khi được khai báo bên trong một hàm.
Tất cả chúng đều có Phạm vi chức năng :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Các biến JavaScript toàn cầu
Một biến được khai báo bên ngoài một hàm, sẽ trở thành GLOBAL .
Thí dụ
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Một biến toàn cục 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 Toàn cầu (bên ngoài bất kỳ hàm nào) có Phạm vi toàn cầu .
Các biến toàn cục có thể được truy cập từ bất kỳ đâu trong chương trình JavaScript.
Các biến được khai báo với
và var
khá giống nhau khi được khai báo bên ngoài một khối.let
const
Tất cả đều có Phạm vi toàn cầu :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
Các 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 một biến TOÀN CẦU .
Ví dụ mã này sẽ khai báo một biến toàn cục carName
, ngay cả khi giá trị được gán bên trong một hàm.
Thí dụ
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
chế độ nghiêm ngặt
Tất cả các trình duyệt hiện đại đều hỗ trợ chạy JavaScript ở "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 chương sau của hướng dẫn này.
Trong "Chế độ nghiêm ngặt", các biến chưa được khai báo không tự động có tính toàn cục.
Biến toàn cục trong HTML
Với JavaScript, phạm vi toàn cầu là môi trường JavaScript.
Trong HTML, phạm vi toàn cục là đối tượng cửa sổ.
Các biến toàn cục được xác định với var
từ khóa thuộc về đối tượng window:
Thí dụ
var carName = "Volvo";
// code here
can use window.carName
Các biến toàn cục được xác định bằng let
từ khóa không thuộc đối tượng window:
Thí dụ
let carName = "Volvo";
// code here can not use window.carName
Cảnh báo
KHÔNG tạo biến toàn cục trừ khi bạn có ý định.
Các biến toàn cục (hoặc các hàm) của bạn có thể ghi đè các biến cửa sổ (hoặc các hàm).
Bất kỳ hàm nào, kể cả đối tượng window, đều có thể ghi đè lên các biến và hàm toàn cục của bạn.
Thời gian tồn tại của các biến JavaScript
Thời gian tồn tại của một biến JavaScript bắt đầu khi nó được khai báo.
Các biến hàm (cục bộ) bị xóa khi hoàn thành hàm.
Trong trình duyệt web, các biến toàn cục sẽ bị xóa khi bạn đóng cửa sổ trình duyệt (hoặc tab).
Đối số hàm
Các đối số của hàm (tham số) hoạt động như các biến cục bộ bên trong các hàm.