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