摘要:原始值就是值本身不可改變,并且沒有方法和屬性。操作的時候看似操作原始值,其實是操作它的副本。代表空指針,就是沒有對象存在,它不是全局對象的屬性。這也是為什么需要替代它的原因。別忘了它們是不同的類型栗子參考資料
原始值就是值本身不可改變,并且沒有方法和屬性。操作的時候看似操作原始值,其實是操作它的副本。
Null 代表空指針,就是沒有對象存在,它不是全局對象的屬性。Null type對應唯一的字面量值null
Undefined 是全局對象的屬性,它對應的唯一字面量值undefined
出現的情況:
1.變量聲明沒有賦值,變量的默認值是undefined
2.函數沒有return,那么默認返回值是undefined
3.方法或是語句中沒有賦值的變量,返回值是undefined
栗子?
不要把undefined作為變量名賦值,這樣不僅會改變undefined的值,也會改變它的類型,這種情況的驗證條件是不在全局環境中。undefined并不是關鍵字,所以避免這種情況
如果要判斷一個值是不是undefined,有三種方式
1.直接比較值跟字面量undefined,這是比較要用全等===
2.就是用typeof 值跟類型’undefined’比較,這個可以在變量沒有聲明的情況下判斷,而不會出錯
3.用void 0代替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
Click here to do nothing
4.也理解了在一些源碼中,看到函數關鍵字function的前面會有void,它可以迫使函數聲明變成函數表達式
栗子?
參考資料:https://developer.mozilla.org...
http://web.jobbole.com/86145/
Null vs Undefined
區別:null表示’空’的對象,轉數值為0,undefined表示‘此處無意義’的原始值,轉數值為NaN
undefined強調’不存在’,適用的場景:
比如:
1.不存在的初始值
2.不存在的對象屬性,或是數組項
3.不存在的函數返回值
4.不存在的函數調用參數
栗子?
null的適用場景:
1.遍歷一個不存在的dom節點
2.在頁面銷毀的時候,把不用的對象賦值為null
二者同為沒有值的代表,在判斷中都是false,但你要是想當然覺得它們相等,那就上當了。別忘了它們是不同的類型
栗子?
參考資料:https://yanhaijing.com/javasc...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94477.html
摘要:值類型與引用類型值類型引用類型值類型引用類型類型轉換字符串拼接運算符語句邏輯運算字符串拼接運算符語句邏輯運算符判斷一個變量會被當做還是區分和會發生類型轉換,沒有類型轉換。 1.數據類型 ECMAScript定義了6種數據類型,包括: 基本數據類型:Undefined、Null、Boolean、Number、String; 復雜數據類型:Object; 2.typeof操作符 typ...
摘要:類型轉換和表示一個空對象。如果有其他類型想轉換為或者類型,直接賦值就可以了。都能隱式的把數據類型轉為類型。。。時間時間二數字類型轉換為字符串默認是進制是一個對象類型,所以其他類型轉化為通常都是。 前言 javaScript是一門可以自由進行數據類型轉換的編程語言,類型轉換是javaScript很重要的特色(坑點很多!!!),大家想以后寫出更多嚴謹的代碼(少出一些莫名其妙的Bug),還是...
摘要:作為對象原型鏈的終點。調用函數時,應該提供的參數沒有提供,該參數等于。它可以用于引用該函數的函數體內當前正在執行的函數。 一 JS 二 CSS 一 JS ==和===的區別 ===叫做嚴格運算符 ==叫做相等運算符嚴格運算符比較時不僅僅比較數值還要比較數據類型是否一樣相等運算符在比較相同類型的數據時,與嚴格相等運算符完全一樣。 在比較不同類型的數據時,相等運算符會先將數據進行類型轉換,...
摘要:作為對象原型鏈的終點。調用函數時,應該提供的參數沒有提供,該參數等于。它可以用于引用該函數的函數體內當前正在執行的函數。 一 JS 二 CSS 一 JS ==和===的區別 ===叫做嚴格運算符 ==叫做相等運算符嚴格運算符比較時不僅僅比較數值還要比較數據類型是否一樣相等運算符在比較相同類型的數據時,與嚴格相等運算符完全一樣。 在比較不同類型的數據時,相等運算符會先將數據進行類型轉換,...
摘要:基本點數據結構本來制作的是腦圖,思維導圖,導出來不好上傳,就這樣吧基本的數據類型區別區別表示聲明了一個變量,沒有初始化的情況下輸出該變量為以及未聲明直接一個未聲明的變量結果也為中的變量是弱類型的,中聲明一個即使未賦值也會自動初始化為類型的并 基本點 數據結構 本來制作的是腦圖,思維導圖,導出來不好上傳,就這樣md+png吧 showImg(https://segmentfault.co...
閱讀 3563·2021-11-22 15:11
閱讀 4643·2021-11-18 13:15
閱讀 2710·2019-08-29 14:08
閱讀 3583·2019-08-26 13:49
閱讀 3100·2019-08-26 12:17
閱讀 3295·2019-08-26 11:54
閱讀 3119·2019-08-26 10:58
閱讀 2039·2019-08-26 10:21