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