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