Lexical Environment đóng vai trò quan trọng trong việc quản lý phạm vi biến và hàm trong JavaScript. Nó là một phần quan trọng của cách JavaScript quản lý và truy cập các biến trong một chương trình.
Khái niệm
Lexical Environment chỉ đơn giản là nơi mà bạn viết code. Hãy cùng nhìn vào đoạn code sau:
function printName() { console.log("Hi, I am Lam")
}
function findName() { return printName()
}
function sayMyName() { return findName()
}
sayMyName();
Mỗi khi một hàm mới được tạo ra, tức là ta đang tạo ra một Lexical Environment. Đối với đoạn code trên chúng ta có 4 Lexical Environment bao gồm: printName()
, findName()
, sayMyName()
và global()
. Lý do có hàm global()
vì đây là Global Execution Context, nó luôn tồn tại ở bên dưới khi chương trình được khởi tạo, các bạn có thể đọc lại bài viết trước mình có nói về Execution Context để hiểu rõ hơn. Nghĩa là 3 hàm trên được viết trong Lexical Environment là global()
.
Thế giả sử mình có hai hàm lồng nhau như này thì sao:
function hangoutWithFriends() { function wearingClothes() { console.log("I am wearing"); }
}
Đoạn code này thể hiện wearingClothes()
có Lexical Environment là hangoutWithFriends()
, còn hangoutWithFriends()
có Lexical Environment là global()
Lý do cần nắm về Lexical Environment
Nắm được Lexical Environment là gì sẽ giúp cho các bạn hiểu hơn về các khái niệm như Scope, Hoisting hay Closures.