JS中的數(shù)據(jù)類型
- undefined
- null
- string
- boolean
- number
- symbol(ES6)
- Object
基本數(shù)據(jù)類型
1:數(shù)字(number):包括了浮點數(shù)和整數(shù);
大多數(shù)語言在計算浮點數(shù)時都會出現(xiàn)計算不精確的問題沪斟,這是由于計算機在計算的時候會將數(shù)組轉(zhuǎn)換成二進(jìn)制數(shù)广辰,因為二進(jìn)制表示太長了,計算機會截取一定的位數(shù)來進(jìn)行計算币喧,所以在計算浮點數(shù)時會出現(xiàn)一些不精確的問題轨域,但是,這種現(xiàn)象在js中尤為嚴(yán)重解決方式一般是先將浮點數(shù)轉(zhuǎn)換成整數(shù)(乘以固定的十的倍數(shù)杀餐,之后再結(jié)果上除去)干发,在網(wǎng)上有很多封裝好的函數(shù)來進(jìn)行這個動作
八進(jìn)制:以數(shù)字0開始表明該數(shù)字的八進(jìn)制;
十六進(jìn)制:以0x或者0X為前綴史翘,表示數(shù)字為十六進(jìn)制枉长;
特殊值:Infinity無窮大和NaN(0/0)非數(shù)字(但是是數(shù)字類型)
Infinity和-Infinity:
通過isFinite()判斷是否有限大,如果是Infinity琼讽,返回false必峰;這里Infinity可以作為參數(shù)賦值給變量(比較大小的問題)
NaN:
代表非數(shù)字的特殊數(shù)值,該屬性用于指示某個值不是數(shù)字钻蹬;
NaN的兩個特點:(NaN == not a number)
1:任何涉及NaN的操作都會返回NaN吼蚁;
2:NaN與任何數(shù)值都不相等,包括他自身;
不能與Number.NaN比較來檢測一個值是不是數(shù)字肝匆,而只能調(diào)用isNaN()來比較粒蜈;
isNaN()(可以用來判斷一個輸入的值是不是數(shù)字)函數(shù)如果x是特殊的非數(shù)字NaN(或者能被轉(zhuǎn)換為這樣的值),返回的值就是true旗国,如果x是其他值枯怖,則返回false。
2:字符串(string):多個字符的有序序列能曾;雙引號和單引號引起來的都是字符串度硝;
3:布爾值(boolean):true / false;
4:undefind
如果使用一個未定義的變量寿冕,或者是沒有初始值的變量蕊程,都會得到undefind,其實null的一個派生蚂斤,因此存捺,undefined和null是相等的;
aleat(undefind == null) //返回值是 true
盡管這兩個值相等曙蒸,但是他們的含義不同
undefined是聲明了變量但為對其初始化時賦予變量的值捌治;
5:null
只有一個值null,如果變量的值是null纽窟,那么這個變量存在但是為空肖油;
null表示尚未存在的對象,但是函數(shù)或方法返回的是對象臂港,找不到該對象時森枪,返回的是null
- symbol(ES6)
ES6 引入了一種新的原始數(shù)據(jù)類型Symbol,表示獨一無二的值审孽。它是 JavaScript 語言的第七種數(shù)據(jù)類型
Symbol 值通過Symbol函數(shù)生成县袱。這就是說,對象的屬性名現(xiàn)在可以有兩種類型佑力,一種是原來就有的字符串式散,另一種就是新增的 Symbol 類型。凡是屬性名屬于 Symbol 類型打颤,就都是獨一無二的暴拄,可以保證不會與其他屬性名產(chǎn)生沖突。
let s = Symbol();
typeof s
// "symbol"
復(fù)雜數(shù)據(jù)類型
對象:屬性和方法的集合