Js基本——數據類型之Null和Undefined

原始值就是值自身不可轉變,而且沒有要領和屬性。操縱的時刻看似操縱原始值,實際上是操縱它的副本。

Null 代表空指針,就是沒有對象存在,它不是全局對象的屬性。Null type對應唯一的字面量值null
Undefined 是全局對象的屬性,它對應的唯一字面量值undefined
湧現的狀況:
1.變量聲明沒有賦值,變量的默許值是undefined
2.函數沒有return,那末默許返回值是undefined
3.要領或是語句中沒有賦值的變量,返回值是undefined
栗子?
《Js基本——數據類型之Null和Undefined》

不要把undefined作為變量名賦值,如許不僅會轉變undefined的值,也會轉變它的範例,這類狀況的考證前提是不在全局環境中。undefined並非關鍵字,所以防止這類狀況
《Js基本——數據類型之Null和Undefined》

假如要推斷一個值是否是undefined,有三種體式格局
1.直接比較值跟字面量undefined,這是比較要用全等===
2.就是用typeof 值跟範例’undefined’比較,這個能夠在變量沒有聲明的狀況下推斷,而不會失足
3.用void 0替換undefined
栗子?
《Js基本——數據類型之Null和Undefined》

參考資料:https://developer.mozilla.org…
https://developer.mozilla.org…

擴大補充:
用void 0 替換undefined很好,為何要替換undefined?為何是void 0而不是其他的?
緣由:1.undefined在全局環境下,已經是只讀屬性不可轉變,但是在塊作用域里照樣能夠轉變的,由於它不是保存關鍵字,所以沒法防止被從新賦值轉變。這也是為何須要替換它的緣由。
2.由於void這個操縱符,背面跟上任何的表達式或是語句,返回值都是undefined,而void 0是一切表達式中最短的一個,最圓滿的是void 0還不能重寫
3.在這裏我也終究邃曉了,當初想讓鏈接跳轉失效,在a標籤如許寫的意圖,就是由於void(0)返回為undefined

<a href="javascript:void(0);">
  Click here to do nothing
</a>

4.也理解了在一些源碼中,看到函數關鍵字function的前面會有void,它能夠迫使函數聲明變成函數表達式
栗子?
《Js基本——數據類型之Null和Undefined》

參考資料:https://developer.mozilla.org…
http://web.jobbole.com/86145/

Null vs Undefined
區分:null示意’空’的對象,轉數值為0,undefined示意‘此處無意義’的原始值,轉數值為NaN
undefined強調’不存在’,實用的場景:
比方:
1.不存在的初始值
2.不存在的對象屬性,或是數組項
3.不存在的函數返回值
4.不存在的函數挪用參數
栗子?
《Js基本——數據類型之Null和Undefined》

null的實用場景:
1.遍歷一個不存在的dom節點
2.在頁面燒毀的時刻,把不必的對象賦值為null

兩者同為沒有值的代表,在推斷中都是false,但你如果想當然以為它們相稱,那就上當了。別忘了它們是差別的範例
栗子?
《Js基本——數據類型之Null和Undefined》

參考資料:https://yanhaijing.com/javasc…

    原文作者:enggirl
    原文地址: https://segmentfault.com/a/1190000014519142
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞