Truy cập biến ngoại vi của hàm trong JavaScript
Hãy xem xét đoạn mã sau:
let num = 1; // gán giá trị cho biến
function func() {
console.log(num); // in giá trị ra console
}
func(); // gọi hàm
Như tôi đã đề cập trước đây, giá trị của biến không nhất thiết phải nằm trước định nghĩa hàm, điều quan trọng là nó phải đứng trước lời gọi hàm:
function func() {
console.log(num);
}
let num = 1;
func();
Thực tế thì không hoàn toàn như vậy. Hàm của chúng ta
thậm chí đã biết giá trị của biến
num trước cả khi được gọi:
let num = 1;
function func() {
console.log(num); // hàm đã biết rằng num = 1
}
Đây là một ví dụ phức tạp hơn:
let num = 1; // vào thời điểm này hàm biết rằng num = 1
function func() {
console.log(num);
}
num = 2; // vào thời điểm này hàm biết rằng num = 2
Thêm các lời gọi hàm:
let num = 1; // vào thời điểm này hàm biết rằng num = 1
func(); // sẽ xuất ra 1
function func() {
console.log(num);
}
func(); // sẽ xuất ra 1
num = 2; // vào thời điểm này hàm biết rằng num = 2
func(); // sẽ xuất ra 2
Một lần nữa: thực tế là hàm biết giá trị của các biến ngoại vi, ngay cả khi nó chưa được gọi.