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