Javascript cơ bản toàn tập – Tìm hiểu về scope trong javascript

Scope là gì ?

Trong Javascript scope hay còn gọi là phạm vi truy cập của các biến, hàm(function) và đối tượng(object) đến ngữ cảnh của đoạn code. Về scope thì có 2 loại chính các bạn cần biết đó là global scope(toàn cục)local scope(cục bộ) nghe qua thôi là đã khó hiểu rồi, nhưng nắm rõ khái niệm này sẽ giúp chúng ta rất nhiều trong việc code tốt hơn, đỡ lỗi hơn và dễ bảo trì hơn về sau.

Hiểu đơn giản về global scope và local scope là những biến được định nghĩa, khai báo bên trong hàm(function) thì được gọi là local scope còn khai báo bên ngoài hàm thì gọi là global scope. Mỗi khi hàm được thực thi thì sẽ tạo ra một scope mới. Bắt đầu rối não rồi nhỉ, đừng lo lắng chúng ta sẽ đi vào chi tiết và ví dụ dưới đây cho dễ hiểu nha

Global scope (biến toàn cục)

Khi mà các bạn bắt đầu học Javascript như bài trước thì các bạn đã sử dụng global scope rồi đó, khi mà các bạn khai báo một biến bất kỳ không phải ở trong hàm như này

Những biến ở Global Scope thì có thể truy cập và thay đổi trong bất kỳ scope nào khác luôn.

Local Scope

Như mình đã nói ở trên là các biến được khai báo bên trong hàm(function) thì được gọi là local scope, và đây là một ví dụ cực đơn giản dễ hiểu:

Block Statement

Block statement giống như if hay vòng lặp for mà các bạn sẽ học tới sau này, không giống như hàm là nó không có tạo ra scope mới. Những biến được sử dụng trong block statement sẽ có scope theo như nó đã được định nghĩa ban đầu.

Như ở bài hoistingbiến mình cũng có nói về từ khoá letconst. Khác với var hai từ khoá này là block scope tức là khi dùng với block statement như trên thì chỉ truy xuất được bên trong cặp dấu {} mà thôi. Ví dụ

Lexical Scope

Lexical Scope nghĩa là trong một nhóm có nhiều hàm lồng nhau và những hàm bên trong có quyền truy xuất đến biến và những tài nguyên khác của những hàm bao ngoài. Để mình cho một ví dụ cho các bạn dễ hình dung nha

Bạn nhìn vào cũng sẽ thấy là các hàm như child, có thể truy xuất biến name từ scope của hàm grandfather, tương tự hàm parent cũng truy xuất được biến name.

# Tạm kết

Bài javascript về scope tạm thời tới đây thôi. Đọc nhiều quá các bạn sẽ đau đầu vì những khái niệm này mất. Còn rất nhiều khái niệm quan trọng khác, ở những bài tiếp theo mình sẽ cố gắng cho ra nhiều cho các bạn học tập nhé.

Related Posts
avatar
900