JavaScript: Sự khác nhau giữa Null và Undefined

-Khi làm quen với Javascript, mình đã tự hỏi tại sao lại có 2 giá trị đều mang nghĩa là “không có gì cả”, đó là null và underfined. Đây là một trong những điểm dễ gây nhầm lẫn, null và underfined, hai khái niệm này không thể đồng nhất làm một dù cho ý nghĩa thực tế của chúng lại tương đối giống nhau. Vậy sự khác biệt giữa null và underfined là gì?
1.Null
– Null có nghĩa là giá trị rỗng hoặc giá trị không tồn tại, nó có thể được sử dụng để gán cho một biến như là một đại diện không có giá trị.
2. Underfined
-Underfined có nghĩa là không xác định. Trong javascript, khi bạn khai báo một biến nhưng chưa gán giá trị cho nó, giá trị của biến đó sẽ là underfined.
-Bất cứ biến nào cũng có thể bị làm rỗng bằng cách thiết lập giá trị về không xác định (undefined).
3. Sự khác biệt giữa null và underfined
-Có thể thấy undefind có kiểu giá trị là undefined nhưng null lại là 1 object (bạn có thể coi đó là một lỗi nhỏ trong JavaScript khi để kiểu của null là đối tượng, đáng ra kiểu của nó nên là null).
@ Ngoài lề một chút
– Phép so sánh “===” và “!==” Trên thực tế, phép toán so sánh “===” tuân theo quy luật dưới đây:
+ Nếu x và y khác kiểu nhau, false.
+Nếu như cả 2 vế đều là null hoặc undefined (null === null), true (tuy nhiên điều này không đúng với NaN đâu nhé).
+Nếu cả 2 vế đều là kiểu Number, 1 trong 2 vế, hoặc cả 2 vế là NaN, false. Còn không thì so sánh giá trị.
+Nếu cả 2 vế đều là kiểu String, nội dung giống nhau: true, còn lại false.
+Nếu cả 2 vế đều là kiểu Boolean, giống nhau thì là true, khác nhau là false.
+Nếu cả 2 vế đều là kiểu Object tham chiếu, nếu cùng tham chiếu tới 1 object: true, còn lại là false.
-Phép so sánh “==” và ” “!=”
+Nếu cả 2 vế đều là null, hoặc undefined, true.
+Nếu một vế là giá trị kiểu Number, vế còn lại là giá trị kiểu String, String sẽ được convert sang kiểu Number và so sánh giá trị.
+Nếu một vế là kiểu Boolean, một vế là kiểu Number, Boolean sẽ được chuyển sang kiểu Number và so sánh giá trị.
+Nếu một vế là kiểu Boolean, một vế là kiểu String, cả 2 vế sẽ được chuyển về kiểu Number và so sánh giá trị.
+Nếu một vế là kiểu Number, một vế là kiểu Object tham chiếu, vế Object tham chiếu sẽ được chuyển sang Number và so sánh giá trị.
+Nếu một vế là kiểu String, một vế là kiểu Object tham chiếu, vế Object tham chiếu sẽ được chuyển sang kiểu String và so sánh nội dung.
+Ngoài những trường hợp trên, tất cả đều là false Vậy nếu so sánh với toán tử == thì null và undefined bằng nhau nhưng với toán tử === thì chúng không bằng nhau. Javascript đã tự động ép kiểu trong phép so sánh null == undefined, để loại bỏ rủi ro có thể xảy ra này, chúng ta nên sử dụng === thay cho == và !== thay cho != trong các phép so sánh.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook