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