大家好,我是IT修真院深圳分院第04期學(xué)員,一枚正直善良的web程序員。
今天給大家分享一下,修真院官網(wǎng) js任務(wù)中可能會(huì)使用到的知識(shí)點(diǎn):
JS有哪些數(shù)據(jù)類型和常用方法?
1.背景介紹
JavaScript
一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,是瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(超文本標(biāo)記語言)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動(dòng)態(tài)功能。
2.知識(shí)剖析
2.1 JS有哪些數(shù)據(jù)類型?
JavaScript 語言的每一個(gè)值,都屬于某一種數(shù)據(jù)類型。JavaScript 的數(shù)據(jù)類型,共有七種。分別是undefined、null、boolean、number、string、object、Symbol。
1)UNDEFINED:UNDEFINED類型只有一個(gè)值,即特殊值UNDEFINED。在使用VAR聲明變量,但未對(duì)其加以初始化時(shí),這個(gè)變量值就是UNDEFINED。
2)NULL:NULL類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型。其特殊值就是NULL。從邏輯角度上看,NULL是一個(gè)空的對(duì)象指針。而這也正是使用TYPEOF操作符檢測(cè)NULL值,會(huì)返回“OBJECT”的原因。
3)BOOLEAN:即布爾類型,該類型有兩個(gè)值:TRUE和FALSE。需要注意的是,BOOLEAN類型的字面值TRUE和FALSE是區(qū)分大小寫的。也就是說,TRUE和FALSE(以及其它的混合大小形式)都不是BOOLEAN值,只是標(biāo)識(shí)符。
4)NUMBER:該類型的表示方法有兩種形式,第一種是整數(shù),第二種為浮點(diǎn)數(shù)。整數(shù):可以通過十進(jìn)制,八進(jìn)制,十六進(jìn)制的字面值來表示。浮點(diǎn)數(shù):就是該數(shù)值中必須包含一個(gè)小數(shù)點(diǎn),且小數(shù)點(diǎn)后必須有一位數(shù)字。
5)STRING:STRING類型用于表示由零或多個(gè)16位的UNICODE字符組成的字符序列,即字符串。至于用單引號(hào),還是雙引號(hào),在JS中還是沒有差別的。記得成對(duì)出現(xiàn)。
6)OBJECT:OBJECT類型,稱為對(duì)象,是一組數(shù)據(jù)和功能(函數(shù))的集合。可以用NEW操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來創(chuàng)建。也可以用字面量表示法創(chuàng)建。在其中添加不同名(包含空字符串在內(nèi)的任意字符串)的屬性。
7)SYMBOL:ES6新增第七種的數(shù)據(jù)類型,SYMBOLS也是一個(gè)集,但它的元素既不是字符串也不是對(duì)象。SYMBOL生成一個(gè)全局唯一的值。
2.2 JS數(shù)據(jù)類型的常用方法
這里介紹7種:Boolean()、isNaN()、Number()、parseInt()、parseFloat()、toString()、String()。







3.常見問題
怎么樣判斷各種數(shù)據(jù)類型?
4.解決方案
這里介紹2種方法:typeof、instanceof.
1)typeof:用來判斷各種數(shù)據(jù)類型,有兩種寫法:typeof xxx ,typeof(xxx)

總結(jié):如果右邊的是基本類型,則typeof會(huì)嘗試得到最基本的類型,比如number,string等等,如果是函數(shù)名,那么則返回function,這里Object,Number,String,等等都可以看成函數(shù)名,如果右邊是一個(gè)基本的對(duì)象,則返回object(返回的都是小寫哦)。 注:我們發(fā)現(xiàn)typeof null,結(jié)果返回了object,這是一個(gè)很早之前的BUG,一直沿用至今。 試用范圍:如果通過typeof來判斷類型,適用于判定基本類型,或者判斷是否為函數(shù)(function)。
2)instanceof,返回的是一個(gè)布爾值

instanceof只能用來判斷對(duì)象和函數(shù),不能用來判斷字符串和數(shù)字等。 instanceof還可以判斷變量是否為數(shù)組。
5.編碼實(shí)戰(zhàn)
以上內(nèi)容。
6.拓展思考
JavaScript 類型轉(zhuǎn)換有哪些?以及如何轉(zhuǎn)換?
更多請(qǐng)參考:http://www.runoob.com/js/js-type-conversion.html
7.參考文獻(xiàn)
w3c:JavaScript數(shù)據(jù)類型
腳本之家:js判斷各種數(shù)據(jù)類型的方法
阮一峰:Javascript標(biāo)準(zhǔn)參考
8.更多討論
問:字符串轉(zhuǎn)數(shù)字用那種方式好?
字符串轉(zhuǎn)數(shù)字方法主要有三種
轉(zhuǎn)換函數(shù)、強(qiáng)制類型轉(zhuǎn)換、利用js變量弱類型轉(zhuǎn)換。
1. 轉(zhuǎn)換函數(shù):
js提供了parseInt()和parseFloat()兩個(gè)轉(zhuǎn)換函數(shù)。前者把值轉(zhuǎn)換成整數(shù),后者把值轉(zhuǎn)換成浮點(diǎn)數(shù)。只有對(duì)String類型調(diào)用這些方法,這兩個(gè)函數(shù)才能正確運(yùn)行;對(duì)其他類型返回的都是NaN(Not a Number)。
2. 強(qiáng)制類型轉(zhuǎn)換
還可使用強(qiáng)制類型轉(zhuǎn)換(type casting)處理轉(zhuǎn)換值的類型。使用強(qiáng)制類型轉(zhuǎn)換可以訪問特定的值,即使它是另一種類型的。
Number()的強(qiáng)制類型轉(zhuǎn)換與parseInt()和parseFloat()方法的處理方式相似,只是它轉(zhuǎn)換的是整個(gè)值,而不是部分值。
最后一種強(qiáng)制類型轉(zhuǎn)換方法String()是最簡(jiǎn)單的,示例如下:
3. 利用js變量弱類型轉(zhuǎn)換
利用了js的弱類型的特點(diǎn),只進(jìn)行了算術(shù)運(yùn)算,實(shí)現(xiàn)了字符串到數(shù)字的類型轉(zhuǎn)換。