JavaScript數(shù)據(jù)類型
- 數(shù)值:整數(shù)和小數(shù)
- 字符串:
- 布爾值:true和false
- undefined:表示未定義或者不存在
- null:空值
- 對象:值的集合乡翅,簡單類型的組合
對象又分成:
1.狹義的對象(object)
2.數(shù)組(array)
3.函數(shù)(function) - symbol:(ES6新增)
數(shù)值
- 0b開頭的表示二進(jìn)制
- 0開頭的表示八進(jìn)制
- 0x開頭的表示十六進(jìn)制
JavaScript 會自動將數(shù)值轉(zhuǎn)為科學(xué)計(jì)數(shù)法表示:
(1)小數(shù)點(diǎn)前的數(shù)字多于21位。
(2)小數(shù)點(diǎn)后的零多于5個光稼。
ES6中新規(guī)定反引號``包裹的字符串可以換行
var a = `1234
5678`
不過第二行必須頂頭寫睹簇,不然會多出來空格大脉。
typeof運(yùn)算符
JavaScript 確定一個值到底是什么類型有三種方法:
- typeof運(yùn)算符
- instanceof運(yùn)算符
- Object.prototype.toString方法
typeof運(yùn)算符可以返回一個值的數(shù)據(jù)類型焊夸。
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
typeof undefined//"undefined"
typeof一個對象返回object朗若。
typeof空數(shù)組([])的類型也是object恼五。
typeof在測試數(shù)據(jù)類型的時候會有倆個意想不到的結(jié)果
typeof null//object
typeof fn()//function
instanceof運(yùn)算符可以區(qū)分?jǐn)?shù)組和對象。
null 和 undefined區(qū)別
- null是一個表示“空”的對象哭懈,轉(zhuǎn)為數(shù)值時為0灾馒;
- undefined是一個表示”此處無定義”的原始值,轉(zhuǎn)為數(shù)值時為NaN遣总。
- 如果一個變量沒有賦值睬罗,他就是undefined
- 想有一個對象object,不想賦值旭斥,就設(shè)置等于null,非對象不想賦值就設(shè)置等于undefined
null表示空值容达,即該處的值現(xiàn)在為空。調(diào)用函數(shù)時垂券,某個參數(shù)未設(shè)置任何值花盐,這時就可以傳入null,表示該參數(shù)為空菇爪。
undefined表示“未定義”算芯,用法如下:
1,變量聲明了凳宙,但沒有賦值
2熙揍,調(diào)用函數(shù)時,應(yīng)該提供的參數(shù)沒有提供氏涩,該參數(shù)等于 undefined
3届囚,對象沒有賦值的屬性
4有梆,函數(shù)沒有返回值時,默認(rèn)返回 undefined
boolean布爾值
下列運(yùn)算符會返回布爾值:
- 兩元邏輯運(yùn)算符: && (And)意系,|| (Or)
- 前置邏輯運(yùn)算符: ! (Not)
- 相等運(yùn)算符:===淳梦,!==,==昔字,!=
- 比較運(yùn)算符:>爆袍,>=,<作郭,<=
轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false陨囊,其他值都視為true。
- undefined
- null
- false
- 0
- NaN
- ""或''(空字符串)
空數(shù)組([])和空對象({})對應(yīng)的布爾值夹攒,都是true蜘醋。
NaN
NaN是 JavaScript 的特殊值,表示“非數(shù)字”(Not a Number)咏尝,主要出現(xiàn)在將字符串解析成數(shù)字出錯的場合压语。
NaN不是一個特殊數(shù)值,數(shù)據(jù)類型是Number编检。
typeof NaN // 'numbe
NaN不等于任何值胎食,包括它本身。
NaN在布爾運(yùn)算時被當(dāng)作false允懂。
NaN與任何數(shù)(包括它自己)的運(yùn)算厕怜,得到的都是NaN。
Infinity
nfinity表示“無窮”蕾总,用來表示兩種場景粥航。一種是一個正的數(shù)值太大,或一個負(fù)的數(shù)值太小生百,無法表示递雀;另一種是非0數(shù)值除以0,得到Infinity蚀浆。
Infinity與NaN比較缀程,總是返回false。
parseInt蜡坊,parseFloat
parseInt方法用于將字符串轉(zhuǎn)為整數(shù)杠输。
字符串轉(zhuǎn)為整數(shù)的時候,是一個個字符依次轉(zhuǎn)換秕衙,如果遇到不能轉(zhuǎn)為數(shù)字的字符,就不再進(jìn)行下去僵刮,返回已經(jīng)轉(zhuǎn)好的部分据忘。
第一個字符不能轉(zhuǎn)化為數(shù)字(后面跟著數(shù)字的正負(fù)號除外)鹦牛,返回NaN。
parseInt方法還可以接受第二個參數(shù)(2到36之間)勇吊,表示被解析的值的進(jìn)制曼追,返回該值對應(yīng)的十進(jìn)制數(shù)。默認(rèn)情況下汉规,parseInt的第二個參數(shù)為10礼殊,即默認(rèn)是十進(jìn)制轉(zhuǎn)十進(jìn)制。
parseFloat方法用于將一個字符串轉(zhuǎn)為浮點(diǎn)數(shù)针史。
parseFloat會將空字符串轉(zhuǎn)為NaN晶伦。
isNaN,isFinite
isNaN方法可以用來判斷一個值是否為NaN啄枕。
isNaN(Number('Hello'))
使用isNaN之前婚陪,最好判斷一下數(shù)據(jù)類型。
判斷NaN更可靠的方法是频祝,利用NaN為唯一不等于自身的值的這個特點(diǎn)泌参,進(jìn)行判斷。
isFinite方法返回一個布爾值常空,表示某個值是否為正常的數(shù)值沽一。
除了Infinity、-Infinity漓糙、NaN和undefined這幾個值會返回false锯玛,isFinite對于其他的數(shù)值都會返回true。
參考資料:
阮一峰的JavaScript教程