Ba khái niệm quan trọng trong Javascript

Ba khái niệm quan trọng trong Javascript

[translate]Three important Concepts in JavaScript

Awesome

Khi mới bước chân vào học ngôn ngữ JS này bản thân tôi thấy có rất nhiều khái niệm quy tắc cần phải nhớ. Để nằm vững chắc ngôn ngữ này chắc phải mấy nhiều thời gian. Mỗi một loại js, một loại framework lại khác nhau. Tuy nhiên dưới đây sẽ là 3 khái niệm quan trọng nhất trong Js mà mỗi dev Js cần lưu tâm. Nó cũng là nội dung trong các câu hỏi phỏng vấn. Do vậy hôm nay mình chọn reup lại bài với nội dung này. Nếu có bất kì sai xót nào mong các bạn comment phía dưới. Cho một thế giới awesome hơn.


Nội dung

Chúng ta biết rằng Js là một ngôn ngữ phát triển nhanh và phổ biến nhất. Js giống bất kì ngôn ngữ lập trình nào khác. Dưới đây là một vài khái niệm quan trọng trong Js. Nếu bạn là một Js developer, bạn cần biết 3 khái niệm này:

  1. Hoisting
  2. Scope
  3. Equality

Hoisting

1_Vn5-7gSVviFzSdHxmnVB2g.png Trong đoạn code phía trên, tôi đã gọi hàm Printname trước hàm khai báo, nhưng tôi nhận được trong output là "undefine" bởi vì "hoisting". Khi biên dịch mã, trình biên dịch đã đưa tất cả các khai báo trong đoạn code lên đầu tiên trên cùng của mã. Hoisting không có nghĩa là tất cả các khai báo sẽ được chuyển lên đầu mã. Chuyện gì sẽ xảy ra trước khi thực thi mã, trình biên dịch đi từ trên xuống dưới code của bạn (quét 1 lượt code) và tạo 1 khoảng trống trong bộ nhớ - memory cho tất cả các khai báo có trong code. Sau khi hoàn thành việc đ, thì code của bạn mới bắt đầu thực thi.

Scope

Có 2 loại scope khác nhau trong Js thông qua việc nơi mà chúng ta có thể sử dụng biến bên trong code:

Global scope

1_EFGI7i162pMEHsiYu5jQsQ.png Trong đoạn code phía trên biến đã gọi biến age từ global bởi vì biến được khai báo ở root của script. Biến age có thể sử dụng được ở cả bên trong và bên ngoài hàm có trong script.

Local scope

1_KcctEtPyt47dOIUrfe00BA.png Trong đoạn code phía trên biến đã được gọi trong phạm vi local bởi vì nó được khai báo trong một hàm. Chúng ta không thể truy cập một biến local từ bên ngoài một hàm như vậy được. Nếu chúng ta cố truy cập vào biến này, chúng ta sẽ nhận về một lỗi đỏ giống hình bên phải. (borring)

Equality

1_E_gCyrPk3j3IW2T2o3NyrQ.png Js có 2 toán tử kiểm tra equality. Thứ nhất là toán tử == (double equal) là một toán tử kiểm tra abstract equality (Mình không dich được nên giữ nguyên - hiểu là kiểm tra giá trị) và toán tử còn lại là === (triple equal - kiểm tra cả kiểu của biến) kiểm tra restrict equality. Sự khác nhau giữa 2 toán tử này: abstract equality (==) không kiểm tra kiểu của dữ liệu, chỉ kiểm tra giá trị, còn restrict equality (===) sẽ kiểm tra cả giá trị và kiểu của dữ liệu. Khi kiểm tra 2 object, nếu các object được đặt tên giống nhau và cùng được gán các giá trị giống nhau, nếu chúng ta kiểm tra bằng abstract equality (==) thì kết quả sẽ là false vì nó sẽ kiểm tra địa chỉ bộ nhớ của 2 object này có trùng với nhau hay không. Khi tạo một object mới thì nó sẽ được đặt vào địa chỉ bộ nhớ mới.

Bài này, tôi giải thích một cách tóm tắt 3 khái niệm qua trọng trong js. Nếu bạn hứng thú hoặc muốn tìm hiểu nhiều hơn về các khái niệm Js, bạn có thể tham khảo trong link dưới đây:

15 javascript concepts that every javascript programmer must know

(MotNgayNaoDoMinhSeDichLaiBaiNay)


Nguồn: medium.com/analytics-vidhya/three-important..