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