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.
Biến JavaScript có 3 loại phạm vi:
- Phạm vi chặn
- Phạm vi chức năng
- Phạm vi toàn cầu
Phạm vi chặn
Trước ES6 (2015), các biến JavaScript chỉ có Global Scope và Function Scope .
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 chặn 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:
Ví dụ
{
let x = 2;
}
// x can NOT be used here
Các biến được khai báo bằng từ khóa var
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.
Ví dụ
{
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 là ĐỊA PHƯƠNG đối với hàm:
Ví dụ
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use 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 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 nên 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 hàm bắt đầu và bị xóa khi hàm 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 được (hiển thị) từ bên ngoài hàm.
Các biến được khai báo bằng var
, let
và const
khá giống nhau khi được khai báo bên trong hàm.
Tất cả đề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
}
Biến JavaScript toàn cầu
Một biến được khai báo bên ngoài hàm sẽ trở thành GLOBAL .
Ví dụ
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Hãy tự mình thử »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ục (bên ngoài bất kỳ hàm nào) đều có Phạm vi toàn cầu .
Các 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 bằng var
, let
và const
khá giống nhau khi được khai báo bên ngoài một khối.
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
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à hàm 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, biến đó sẽ tự động trở thành biến GLOBAL .
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.
Ví dụ
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
Hãy tự mình thử »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 không đượ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 window.
Các biến toàn cục được xác định bằng từ khóa var
thuộc về đối tượng window:
Các biến toàn cục được xác định bằng từ khóa let
không thuộc về đối tượng window:
Cảnh báo
KHÔNG tạo các biến toàn cục trừ khi bạn có ý định đó.
Các biến (hoặc hàm) toàn cục của bạn có thể ghi đè lên các biến (hoặc hàm) cửa sổ.
Bất kỳ hàm nào, kể cả đối tượng cửa sổ, đều có thể ghi đè các biến và hàm toàn cục của bạn.
Tuổi thọ của các biến JavaScript
Vòng đời của một biến JavaScript bắt đầu từ khi nó được khai báo.
Các biến của hàm (cục bộ) sẽ bị xóa khi hàm được hoàn thành.
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ổ (hoặc tab) trình duyệt.
Đối số hàm
Các đối số (tham số) của hàm hoạt động như các biến cục bộ bên trong hàm.