javascript的數(shù)據(jù)類(lèi)型分為兩種:1、值類(lèi)型(基本類(lèi)型),包含String、Number、Boolean、Null、Undefined和Symbol類(lèi)型;2、引用數(shù)據(jù)類(lèi)型,包含Object、Array和Function類(lèi)型。
本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。
javascript數(shù)據(jù)類(lèi)型分為:
-
值類(lèi)型(基本類(lèi)型):字符串(String)、數(shù)字(Number)、布爾(Boolean)、對(duì)空(Null)、未定義(Undefined)、Symbol。
-
引用數(shù)據(jù)類(lèi)型:對(duì)象(Object)、數(shù)組(Array)、函數(shù)(Function)。
基本數(shù)據(jù)類(lèi)型詳解:
1、number類(lèi)型
① number類(lèi)型包含整數(shù)和浮點(diǎn)數(shù)(浮點(diǎn)數(shù)數(shù)值必須包含一個(gè)小數(shù)點(diǎn),且小數(shù)點(diǎn)后至少有一位數(shù)字)。
浮點(diǎn)數(shù)會(huì)自動(dòng)轉(zhuǎn)換為整數(shù),如下:
let num = 1.00 console.log(num) // 輸出:1,自動(dòng)轉(zhuǎn)換為了整數(shù)
② 浮點(diǎn)數(shù)的最高精度是17位,看下面的例子:
let a = 0.1 let b = 0.2 console.log(a + b) // 輸出:0.30000000000000004
上面的例子,結(jié)果竟然不是0.3,至于其他變成語(yǔ)言,也會(huì)遇到這種情況(關(guān)于浮點(diǎn)數(shù)計(jì)算會(huì)產(chǎn)生誤差問(wèn)題,其他有些變成語(yǔ)言也會(huì)出現(xiàn)類(lèi)似情況。)
③ NaN:非數(shù)字類(lèi)型,特點(diǎn):涉及到任何關(guān)于NaN的操作,都會(huì)返回NaN,而且NaN不等于自身。如下:
let name = 'lisi' console.log(name / 10) // 輸出:NaN console.log(NaN === NaN) // 輸出:false
④ isNaN()函數(shù)用于判斷是否是一個(gè)非數(shù)字類(lèi)型,如果傳入的參數(shù)是一個(gè)非數(shù)字類(lèi)型,那么返回true,否則返回false;
⑤ isNaN()函數(shù)傳入一個(gè)參數(shù),函數(shù)會(huì)先將參數(shù)轉(zhuǎn)換為數(shù)值,如果參數(shù)類(lèi)型為對(duì)象類(lèi)型,會(huì)先調(diào)用對(duì)象的valueOf()方法,再確定該方法返回的值是否可以轉(zhuǎn)換為數(shù)值類(lèi)型,如果不能,再調(diào)用對(duì)象的toString()方法,再確定返回值;
⑦ 數(shù)值轉(zhuǎn)化:
Number(),轉(zhuǎn)型函數(shù),可以用于任何數(shù)據(jù)類(lèi)型
parseInt(),將值轉(zhuǎn)換為整型,用的較多
parseFloat(),將值轉(zhuǎn)換為浮點(diǎn)型
2、string類(lèi)型
① 字符串類(lèi)型中的單雙引號(hào)作用一樣;
② 字符串有l(wèi)ength屬性,可以取得字符串的長(zhǎng)度:
let str = 'Hello world' console.log(str.length) // 輸出:11
③ 字符串的值是不可變的,要改變一個(gè)字符串的值,首先要銷(xiāo)毀原來(lái)的字符串,再用另一個(gè)包含新值得字符串區(qū)填充該字符串;
④ 字符串轉(zhuǎn)換:
String(),轉(zhuǎn)型函數(shù),適用于任何數(shù)據(jù)類(lèi)型(null,undefined轉(zhuǎn)換后為null和undefined)
toString()方法可以把一個(gè)邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果(null、undefined沒(méi)有toString()方法)
let ab = 'zhangsan' let bc = null let cd = undefined console.log(ab.toString()) // 輸出:zhangsan // console.log(bc.toString()) // error 報(bào)錯(cuò) // console.log(cd.toString()) // error 報(bào)錯(cuò) console.log(String(ab)) // 輸出:zhangsan console.log(String(bc)) // 輸出:null console.log(String(cd)) // 輸出:undefined
3、boolean類(lèi)型
① 這個(gè)類(lèi)型只有兩個(gè)值,true和false;
② Boolean(),轉(zhuǎn)型函數(shù),將某個(gè)值轉(zhuǎn)換為Boolean類(lèi)型
4、null類(lèi)型
① null類(lèi)型被看做空對(duì)象指針,只有一個(gè)值,即null值,所以在用typeof操作符去檢測(cè)null類(lèi)型的值得時(shí)候,結(jié)果是object類(lèi)型;
② 如果你定義了一個(gè)變量,但是想在以后把這個(gè)對(duì)象當(dāng)做一個(gè)對(duì)象來(lái)使用,最好將該對(duì)象初始化為null值
5、undefined類(lèi)型
① 只有一個(gè)值,即undefined,如果聲明了一個(gè)變量,但是未給變量初始化值,那么這個(gè)變量的值就是undefined:
let name = 'zhangsan' let age console.log(name) // 輸出:zhangsan console.log(age) // undefined,因?yàn)槁暶髁薬ge,但是沒(méi)有給初始化值
② 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒(méi)有提供,該參數(shù)等于undefined;
③ 對(duì)象沒(méi)有賦值的屬性,該屬性的值為undefined;
④ 函數(shù)沒(méi)有返回值,默認(rèn)返回undefined。
6、Symbol
Symbol 是 ES6 引入了一種新的原始數(shù)據(jù)類(lèi)型,表示獨(dú)一無(wú)二的值。Symbol 類(lèi)型是唯一的并且是不可修改的
var s = Symbol()
Symbol 函數(shù)前不能使用 new 命令,否則會(huì)報(bào)錯(cuò)。這是因?yàn)樯傻?Symbol 是一個(gè)原始類(lèi)型的值,不是對(duì)象。
Symbol 函數(shù)可以接受一個(gè)字符串作為參數(shù),表示對(duì) Symbol 實(shí)例的描述