undefined
出現(xiàn)場景:
已經(jīng)聲明還未賦值的變量档押;
獲取對象不存在的屬性柴信;
無返回值的函數(shù)的執(zhí)行結(jié)果夺英;
函數(shù)的參數(shù)沒有傳入,嘗試去獲取轧膘;
轉(zhuǎn)型函數(shù)去操作undefined值:
Boolean=>false
Number=>NaN
String=>"undefined"
Boolean
出現(xiàn)場景:條件語句導(dǎo)致系統(tǒng)執(zhí)行隱式類型轉(zhuǎn)換熬荆;
轉(zhuǎn)型函數(shù)去操作Boolean值:
Number=>1/0
String=>"true"/"false"
String
Number
Object
如何判斷一個對象是不是{}(空對象)
JSON.stringify({})==="{}"
數(shù)據(jù)之間的類型識別
1.typeof
typeof null返回object
typeof 無法識別對象具體類型舟山,都返回object,除了function返回Function
2. Object.prototype.toString.call(對象)
var arr = [];
console.log(Object.prototype.toString.call(arr)) //"[object Array]"
可以識別標(biāo)準(zhǔn)類型及內(nèi)置對象類型
不能識別自定義類型
3.constructor
console.log([].constructor===Array)//true
console.log([].constructor.name==="Array")//true
constructor屬性可以在實例上訪問到卤恳,但其實constructor屬于原型對象累盗,是通過[].__proto__.constrctor
訪問到的。
4.instanceof
可以判斷內(nèi)置對象
可以判斷自定義類型
instanceof用來測試一個對象在其原型鏈中是否存在一個構(gòu)造函數(shù)的 prototype 屬性突琳。
在另一篇文章里面看到對于instanceof原理的解釋非常好若债,這里引用一下,JavaScript instanceof 運算符深入剖析