相關(guān)文章
博客原文
數(shù)據(jù)類型總結(jié)——概述
數(shù)據(jù)類型總結(jié)——String(字符串類型)
數(shù)據(jù)類型總結(jié)——Number(數(shù)值類型)
數(shù)據(jù)類型總結(jié)——Boolean類型(布爾類型)
數(shù)據(jù)類型總結(jié)——null和undefined
數(shù)據(jù)類型總結(jié)——基本包裝類型
數(shù)據(jù)類型總結(jié)——Array(數(shù)組類型)
大綱
前言
1、關(guān)于null
2、關(guān)于undefined
前言
數(shù)據(jù)類型是每一種語言都需要掌握的內(nèi)容,掌握每一種數(shù)據(jù)類型的使用是掌握這門語言必不可少的。而我也對數(shù)據(jù)類型寫了一系列的博客,其中包含了對某一數(shù)據(jù)類型的概念的認(rèn)識和理解以及常使用的方法。以下就是我對null類型和undefined類型的一些認(rèn)識和理解,希望能對讀者有所幫助。
1、關(guān)于null
1、Null類型只有一個特殊的值,那就是null,從邏輯的角度來看,null值表示一個空對象指針。
2、如果定義的變量準(zhǔn)備用來保存對象,那么最好將該變量初始化為null而不是其他值。這樣一來,只要直接檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個對象的引用。
if(car != null){
//對car對象執(zhí)行某些操作
}
3、實(shí)際上,undefined值是派生自null值的,因此這兩者的相等性測試要返回true。
console.log(undefined == null);//true
console.log(undefined === null);//false
4、盡管null和undefined是相等的,但是他們的用途是完全不一樣的。如前所述,無論什么情況下都沒有必要把一個變量的值顯示的設(shè)置為undefined,可是同樣的情況卻不適用與null,話句話說,只要意在保存對象的變量還沒有真的保存對象,就應(yīng)該明確的讓該變量保存null值,這樣做不僅可以體現(xiàn)null作為空對象的指針的慣例,同時(shí)也有助于進(jìn)一步區(qū)分null和undefined。
2、關(guān)于undefined
1、Undefined類型只有一個值,那就是undefined,使用var聲明變量但并未對其進(jìn)行初始化時(shí),就會默認(rèn)對其賦值,即undefined。
2、一般而言,不存在需要顯示的把一個變量的值設(shè)置為undefined的情況,因?yàn)榫幾g器會自動為其賦這個值。字面值undefined的主要目的是用于比較,引入這個值是為了將空對象指針與未經(jīng)初始化的變量區(qū)分開來,即區(qū)分null和undefined。
var num1;
var num2 = null;
console.log(typeof num1);//undefined
console.log(typeof num2);//object
console.log(typeof numg);//undefined(需要注意的是未經(jīng)定義的變量使用typeof得到的也是undefined)
console.log(num1)//undefined
console.log(num2)//null
console.log(numg)//“numg”未定義
3、對未經(jīng)聲明的和未初始化的變量執(zhí)行typeof操作符都返回了undefined值,這個結(jié)果有其邏輯上的的合理性。因?yàn)檫@兩種變量從技術(shù)角度上來看有本質(zhì)上的區(qū)別,但實(shí)際上無論哪種情況也不能執(zhí)行真正的操作。
4、即便未初始化的變量會被自動賦值undefined,但是顯示地初始化變量依然是明智的選擇。如果能做到這一點(diǎn),那么當(dāng)typeof操作符返回undefined的時(shí)候,我們就知道被檢測的變量是還未聲明,而不是尚未初始化。