Phạm vi JavaScript: Block, Global, và Function
Scope quyết định nơi bạn có thể sử dụng một biến trong mã nguồn của mình.
Global Scope (Phạm vi toàn cục) Các biến tồn tại bên ngoài các hàm hoặc khối lệnh. Bạn có thể truy cập chúng từ bất kỳ đâu trong script của mình. Cảnh báo: Các biến toàn cục dễ dẫn đến lỗi vì bất kỳ phần nào trong mã nguồn cũng có thể thay đổi chúng.
Function Scope (Phạm vi hàm) Các biến tồn tại bên trong một hàm. Bạn chỉ có thể truy cập chúng trong phạm vi hàm cụ thể đó.
Block Scope (Phạm vi khối) Điều này áp dụng cho JavaScript hiện đại khi sử dụng
lethoặcconst. Các biến tồn tại bên trong các dấu ngoặc nhọn {}. Một khối bao gồm:
- các câu lệnh
if - các vòng lặp
for - các vòng lặp
while - các khối độc lập {}
Tóm tắt về Scope:
- Global: Có thể truy cập ở mọi nơi.
- Function: Chỉ có thể truy cập bên trong hàm.
- Block: Chỉ có thể truy cập bên trong các dấu ngoặc nhọn.
var: Sử dụng phạm vi hàm. Nó bỏ qua phạm vi khối.letvàconst: Sử dụng phạm vi khối. Hãy sử dụng chúng để viết mã tốt hơn.
Hiểu về Tiến trình (Processes) và Luồng (Threads)
Một tiến trình (process) là một chương trình đang chạy với bộ nhớ riêng. Hãy coi WhatsApp là một tiến trình.
Một luồng (thread) là một phần nhỏ của một tiến trình. Các luồng chia sẻ cùng một bộ nhớ.
- Các luồng rất nhẹ.
- Chúng được tạo ra rất nhanh.
- Chúng cho phép bạn thực hiện nhiều việc cùng một lúc.
Ví dụ về WhatsApp: Một tiến trình (WhatsApp) chạy nhiều luồng:
- Nhận tin nhắn
- Gửi ảnh
- Phát video
- Hiển thị thông báo
Source: https://freeacademy.ai/lessons/global-vs-function-vs-block-scope Source: https://josephcardillo.medium.com/the-difference-between-function-and-block-scope-in-javascript-4296b2322abe