摘要:是全局對(duì)象的一個(gè)屬性,當(dāng)聲明了一個(gè)變量而未初始化時(shí),得到的就是。作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。作為對(duì)象原型鏈的終點(diǎn)。表示缺少值,此處應(yīng)該有值,但未定義。因此和的值相等而類型不相等。數(shù)字運(yùn)算不相同這是由于約定的不同所決定的。
對(duì)于undefined和null我一直知道他們有很多區(qū)別,也知道一點(diǎn)關(guān)于他們的區(qū)別,但卻不具體系統(tǒng),因此總結(jié)了一下,主要心得如下:
我們要區(qū)分它們,首先要明確這兩個(gè)值所代表的意義:
null 是一個(gè) JavaScript字面量,表示空值,即沒有對(duì)象被呈現(xiàn),它是JavaScript的原始值之一,使用typeof運(yùn)算得到 “object”。
undefined 是全局對(duì)象的一個(gè)屬性,當(dāng)聲明了一個(gè)變量而未初始化時(shí),得到的就是undefined。
具體表現(xiàn)如下:
a; console.log(a); //Uncaught ReferenceError: a is not defined var b = null; console.log(b); //null
而它們出現(xiàn)的情景也各不相同,具體總結(jié)如下:
null:即表示為空,沒有對(duì)象。
作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。
作為對(duì)象原型鏈的終點(diǎn)。
undefined:表示缺少值,此處應(yīng)該有值,但未定義。
變量被聲明了,但沒有值,此時(shí)為undefined
調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,此時(shí)為undefined
對(duì)象沒有賦值的屬性,此屬性值為undefined
函數(shù)沒有返回值,默認(rèn)返回undefined
null與undefined的區(qū)別主要體現(xiàn)在以下三點(diǎn):var x; var y = null; console.log(x == y); //ture console.log(x ===y); //false
在上面的代碼中 == 會(huì)繼續(xù)類型轉(zhuǎn)換,且值是相等的,所以會(huì)得出 ture;而在
=== 中則不會(huì)發(fā)生類型轉(zhuǎn)換所以得出的是 false。因此undefined和null的值相等而類型不相等。
1+null //1 1+undefined //NaN
這是由于約定的不同所決定的。在規(guī)定中數(shù)字與undefined運(yùn)算時(shí),結(jié)果都NaN。在與null運(yùn)算時(shí),null始終為0。
當(dāng)我們想要判斷一個(gè)值是否存在可以這樣寫:
objA.valueA === undefined
而當(dāng)我們想要判斷一個(gè)對(duì)象是否為空時(shí)可以這么寫:
objA.valueA == null
最后借一波MDN總結(jié)的null和undefined的區(qū)別的代碼:
typeof null // object (因?yàn)橐恍┮郧暗脑蚨皇?null") typeof undefined // undefined null === undefined // false null == undefined // true null === null // true null == null // true !null //true isNaN(1 + null) // false isNaN(1 + undefined) // true
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93309.html
摘要:他們的布爾值都是,說到布爾值為的,通常包括空字符串這五種常見的對(duì)象。各自都是孤家寡人,不用拖家?guī)Э诘模蝗顺燥柸也火I。 舉個(gè)簡(jiǎn)單的栗子: A和B兩個(gè)人肚子都很餓,要去吃飯。A已打電話到飯店預(yù)約位置,B則打算下班后考察下再做決定。對(duì)于飯店來說,A基本上就是他的客戶了,只不過還沒見到人來,定為null(畢竟交易還沒產(chǎn)生),而對(duì)飯店來說,B是誰啊,他們根本沒聽到過這個(gè)人,為undefine...
摘要:例如自定義局部變量作用域上的引用比較作用域上的引用比較其中,定義局部變量時(shí),其初始值會(huì)是對(duì)屬性值的引用。新定義的局部變量存在與該函數(shù)的作用域上。這就是許多前端框架為什么常常要自己定義一個(gè)局部變量的原因 在javascript開發(fā)中,開始學(xué)習(xí)js的時(shí)候時(shí)常困惑我的就是null和undefined的區(qū)別,所以很想總結(jié)下我對(duì)這兩個(gè)的理解學(xué)習(xí)過js的同學(xué)都知道: null==undefined...
摘要:引子前不久我建立的技術(shù)群里一位問了一個(gè)這樣的問題,她貼出的代碼如下所示執(zhí)行結(jié)果如下所示第一個(gè)第二個(gè)這是一個(gè)令人詫異的結(jié)果,為什么第一個(gè)彈出框顯示的是,而不是呢這種疑惑的原理我描述如下一個(gè)頁面里直接定義在標(biāo)簽下的變量是全局變量即屬于對(duì)象的變量 1) 引子 前不久我建立的技術(shù)群里一位MM問了一個(gè)這樣的問題,她貼出的代碼如下所示: var a = 1; function hehe...
摘要:數(shù)組也是對(duì)象簡(jiǎn)單來說,對(duì)象就是一系列屬性名值對(duì),即某個(gè)屬性名對(duì)應(yīng)某個(gè)屬性值當(dāng)我們遍歷對(duì)象時(shí),不在對(duì)象中的屬性當(dāng)然不會(huì)被訪問到。我們知道操作符用于刪除對(duì)象中某個(gè)屬性,而中,數(shù)組就是對(duì)象的一種,數(shù)組的索引就是其屬性名,對(duì)應(yīng)的項(xiàng)就是屬性值。 先說結(jié)論吧: 數(shù)組的map方法在IE9以下是不支持的,因此需要寫一個(gè)兼容方法來實(shí)現(xiàn)此行為,在實(shí)現(xiàn)兼容的時(shí)候:必須注意:對(duì)于數(shù)組中被刪除(dele...
摘要:類型轉(zhuǎn)換和表示一個(gè)空對(duì)象。如果有其他類型想轉(zhuǎn)換為或者類型,直接賦值就可以了。都能隱式的把數(shù)據(jù)類型轉(zhuǎn)為類型。。。時(shí)間時(shí)間二數(shù)字類型轉(zhuǎn)換為字符串默認(rèn)是進(jìn)制是一個(gè)對(duì)象類型,所以其他類型轉(zhuǎn)化為通常都是。 前言 javaScript是一門可以自由進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的編程語言,類型轉(zhuǎn)換是javaScript很重要的特色(坑點(diǎn)很多!!!),大家想以后寫出更多嚴(yán)謹(jǐn)?shù)拇a(少出一些莫名其妙的Bug),還是...
閱讀 3638·2021-11-19 09:40
閱讀 3096·2019-08-30 15:54
閱讀 2314·2019-08-30 15:44
閱讀 3196·2019-08-29 15:35
閱讀 3331·2019-08-29 12:22
閱讀 2861·2019-08-28 18:01
閱讀 3141·2019-08-26 13:54
閱讀 902·2019-08-26 12:24