區(qū)分大小寫(xiě)
松散類型的變量,只會(huì)存值不會(huì)標(biāo)記變量類型,關(guān)鍵字var
變量類型:Undefined, Null, String, Number, Boolean, Object
typeof返回:undefined, object, string, number, boolean, function
typeof是操作符,并不是函數(shù),typeof null和typeof(null)都可以,null是空的對(duì)象指針,返回object;未定義的變量使用typeof并不會(huì)報(bào)錯(cuò)
var message
console.log(message) //undefined
console.log(age) //undefined
Undefined類型只有一個(gè)值:undefined,沒(méi)有初始化的變量都會(huì)保存undefined值
Null類型只有一個(gè)值:null,如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象,那么最好將該變量初始化為null而不是其他值;'undefined'派生自'null'
console.log(undefined == null) //true
Boolean:true, false(注意區(qū)分大小寫(xiě),True和False就只是普通的標(biāo)識(shí)符);可以使用Boolean()將任意類型的值轉(zhuǎn)換為Boolean值,列舉出false的情況如下
//String
console.log('') //false
//Number
console.log(0) //fasle
console.log(NaN) //false
//Object
console.log(null) //false
//Undefined
console.log(undefined) //false
if判斷自動(dòng)執(zhí)行Boolean轉(zhuǎn)換
var message = 'message'
if(message) {//true}
Number:數(shù)字首位為0表示八進(jìn)制(嚴(yán)格模式不支持),類似078會(huì)當(dāng)做十進(jìn)制數(shù)值;0x表示十六進(jìn)制,a-f可大寫(xiě)也可小寫(xiě);浮點(diǎn)數(shù)精度為17位小數(shù),永遠(yuǎn)不要測(cè)試某個(gè)特定的浮點(diǎn)數(shù)值(0.1+0.2 != 0.3);最大值Number.MAX_VALUE,最小值Number.MIN_VALUE,如果超出范圍將自動(dòng)轉(zhuǎn)換成正無(wú)窮Infinity(Number.POSITIVE_INFINITY,不能參與計(jì)算)或負(fù)無(wú)窮-Infinity(Number.NEGATIVE_INFINITY,不能參與計(jì)算),判斷數(shù)值是否超出范圍使用isFinite(),超出范圍返回false;NaN與任何值都不相等,包括他自己
console.log(NaN == NaN) //false
判斷是否不是數(shù)值,使用isNaN(),不能轉(zhuǎn)換為數(shù)值返回true