數(shù)據(jù)類型是決定 value 可以存為哪個(gè)類型的特性。例如在 JavaScript 中一個(gè) Boolean 只能存放 true或false , 而一個(gè) String 能存放任何字符串 , 一個(gè) Number 存放任何類型的數(shù)字 , 等等...值的數(shù)據(jù)類型也影響哪個(gè)操作對(duì)該值有效,例如, 一個(gè)整數(shù)可以乘以一個(gè)整數(shù),而不是一個(gè)字符串巨柒。
——MDN
0七種數(shù)據(jù)類型
0.1數(shù)值 Number
0.1.1定義
在 JavaScript 中, Number 是一種雙精度64位浮點(diǎn)格式(double-precision 64-bit floating point format)/binary64 (IEEE 754-2008)/ double (IEEE 754-1958)的數(shù)字?jǐn)?shù)據(jù)類型(ECMAScript )歼指。
——MDN
0.1.2屬性
格式:
符號(hào)位(用于表示正負(fù)號(hào)):1位卖丸,0表示正數(shù)糠悯,1表示負(fù)數(shù);
指數(shù)(用于表示次方數(shù)):11位妻往,數(shù)值范圍:(2^1024互艾,2^-1023),超出范圍的數(shù)字會(huì)返回infinity讯泣;
尾數(shù)纫普、顯著精度(用于表示精確度):53位(52顯式存儲(chǔ)),可以精確表示絕對(duì)值小于2^53的數(shù)字好渠,超出范圍的整數(shù)運(yùn)算的結(jié)果會(huì)開(kāi)始出現(xiàn)錯(cuò)誤昨稼;
整數(shù)字面量:十進(jìn)制沒(méi)有前綴0;二進(jìn)制整數(shù)以0b/0B開(kāi)頭拳锚;八進(jìn)制整數(shù)以0o/0O開(kāi)頭假栓,只能包括數(shù)字0-7,嚴(yán)格模式下必須以0o/0O開(kāi)頭霍掺;十六進(jìn)制整數(shù)以0x/0X開(kāi)頭匾荆;
浮點(diǎn)數(shù)字面量:一個(gè)十進(jìn)制正數(shù):可以帶正負(fù)號(hào);小數(shù)點(diǎn)杆烁;小數(shù)部分(一串由十進(jìn)制表示)牙丽;指數(shù)部分,以e/E開(kāi)頭兔魂,后面跟著整數(shù)烤芦,可以由正負(fù)號(hào)。(浮點(diǎn)數(shù)字面量至少有一位數(shù)字析校,而且必須帶小數(shù)點(diǎn)或e/E)
正零和負(fù)零:64位浮點(diǎn)數(shù)表示法的符號(hào)位不同构罗,但是等價(jià)的。
NaN:非數(shù)字勺良。
infinity:無(wú)窮绰播,有正負(fù)。
0.1.3關(guān)系
在其他編程語(yǔ)言中尚困,有不同的數(shù)字類型存在蠢箩,比如:整型(Integers),單精度浮點(diǎn)型(Floats),雙精度浮點(diǎn)型(Doubles)谬泌,Bignums滔韵。
優(yōu)勢(shì):雙精度二進(jìn)制浮點(diǎn)格式(double)是計(jì)算機(jī)使用的一種數(shù)據(jù)類型。比起單精度浮點(diǎn)數(shù)掌实,雙精度浮點(diǎn)數(shù)(double)使用 64 位(8字節(jié)) 來(lái)儲(chǔ)存一個(gè)浮點(diǎn)數(shù)陪蜻。 它可以表示十進(jìn)位制的15或16位有效數(shù)字,其可以表示的數(shù)字的絕對(duì)值范圍大約是[2.23\times 10^((-308)),{\text{1.79))\times 10^((308))]贱鼻,它比單精度浮點(diǎn)格式具有更寬的適用范圍宴卖。
劣勢(shì):與單精度浮點(diǎn)格式一樣,與相同大小的整數(shù)格式相比邻悬,它缺乏對(duì)整數(shù)的精度症昏。
0.2.字符串 String
0.2.1定義
由零個(gè)或多個(gè)字符組成的有限序列。它是編程語(yǔ)言中表示文本的數(shù)據(jù)類型父丰。
0.2.2屬性
放在單引號(hào)或雙引號(hào)之中肝谭。注意在單/雙引號(hào)中使用單引號(hào)需要在內(nèi)部的單/雙引號(hào)前面加上反斜杠用來(lái)轉(zhuǎn)義。
字符串長(zhǎng)度:在面向?qū)ο笳Z(yǔ)言JavaScript把字符串表示為對(duì)象的情況下蛾扇,如果值可以在運(yùn)行期變更攘烛,則叫做“可變的”(mutable),如果值在建立后就不可變更了镀首,則叫做“不變的”(immutable)
“定長(zhǎng)字符串”坟漱,它有固定的極大長(zhǎng)度并且不管是否達(dá)到了這個(gè)極大值都使用同樣數(shù)量的內(nèi)存;
“變長(zhǎng)字符串”蘑斧,它的長(zhǎng)度不是專斷固定的并且依賴于實(shí)際的大小使用可變數(shù)量的內(nèi)存靖秩。(如:對(duì)象object)
0..3關(guān)系
如果長(zhǎng)字符串需要分成多行,有下面幾種方法:
1)反斜杠竖瘾;2)操作符+沟突;2)模板字面量`;
轉(zhuǎn)義符(\):在字符串內(nèi)用來(lái)表示一些特殊字符捕传。
字符串與數(shù)組:
字符串可以被視為字符數(shù)組惠拭,也有l(wèi)ength屬性。
字符集:JavaScript運(yùn)行在程序中使用Unicode碼點(diǎn)表示字符庸论,即將字符寫(xiě)成\uxxxx的形式职辅。每個(gè)字符在JavaScript內(nèi)部都是以16位(即2個(gè)字節(jié))的UTF-16格式儲(chǔ)存。
Base64轉(zhuǎn)碼:將任意值轉(zhuǎn)換為0~9聂示,A~Z域携,a~z,+和/這64個(gè)字符組成的可打印字符鱼喉,JavaScript原生提供兩個(gè)轉(zhuǎn)換方法:
1)btoa():任意值轉(zhuǎn)換為Base64秀鞭;atob():Base64轉(zhuǎn)換為原來(lái)值趋观。
0.3.布爾值 Boolean
0.1.1定義
一種邏輯數(shù)據(jù)類型,它只能具有真值或假值锋边。
0.1.2屬性
如果JavaScript預(yù)期某個(gè)位置應(yīng)該是布爾值皱坛,會(huì)將該位置上現(xiàn)有的值自動(dòng)轉(zhuǎn)換為布爾值,轉(zhuǎn)換規(guī)則是除了undefined,null,false,0,NaN,' '或" "這6個(gè)值被轉(zhuǎn)換為false豆巨,其他值都被視為true剩辟。
0.1.3關(guān)系
在抽象代數(shù)中,布爾代數(shù)(英語(yǔ):Boolean algebra)是捕獲了集合運(yùn)算和邏輯運(yùn)算二者的根本性質(zhì)的一個(gè)代數(shù)結(jié)構(gòu)(就是說(shuō)一組元素和服從定義的公理的在這些元素上運(yùn)算)往扔。特別是贩猎,它處理集合運(yùn)算交集、并集萍膛、補(bǔ)集融欧;和邏輯運(yùn)算與、或卦羡、非。
在JavaScript中麦到,布爾條件常常用于決定執(zhí)行哪部分代碼(比如if語(yǔ)句)或重復(fù)(比如for循環(huán))等等的邏輯計(jì)算绿饵。
0.4.undefined
0.1.1定義
當(dāng)一個(gè)表達(dá)式未被賦予正確值,但在語(yǔ)法上是正確的時(shí)候瓶颠。
表示一個(gè)“此處無(wú)定義”的原始值拟赊。
0.1.2屬性
根據(jù)情況,對(duì)undefined的評(píng)估可能導(dǎo)致異炒饬埽或未定義行為吸祟,但在某些編程語(yǔ)言中,未定義值可能發(fā)生在正常的桃移、可預(yù)測(cè)的程序執(zhí)行過(guò)程中屋匕。
轉(zhuǎn)換數(shù)值時(shí)為NaN。
0.1.3關(guān)系
undefined不能與空字符串借杰、布爾“false”或其他“空”(但定義的)值混淆过吻。
可空(nullable)數(shù)據(jù)類型保留一個(gè)特殊的空值來(lái)表示undefined的值,因此null是一種值蔗衡;注意纤虽,undefined通常不是值。
0.5.null
0.1.1定義
空對(duì)象绞惦。
' '
" "
0.5.2屬性
轉(zhuǎn)換為數(shù)值是0逼纸。
0.5.3關(guān)系
0.6symbol
0.6.1定義
Symbol 為字面量基本類型。ES6新引入的數(shù)據(jù)類型济蝉〗芄簦可以創(chuàng)建獨(dú)一無(wú)二的值菠发。
0.6.2屬性
“symbol”這個(gè)類型的值可以用來(lái)創(chuàng)建匿名的對(duì)象屬性。該數(shù)據(jù)類型通常被用作一個(gè)對(duì)象屬性的鍵值——當(dāng)你想讓它是私有的時(shí)候专缠。例如雷酪,symbol 類型的鍵存在于各種內(nèi)置的 JavaScript 對(duì)象中。同樣涝婉,自定義類也可以這樣創(chuàng)建私有成員哥力。symbol 數(shù)據(jù)類型具有非常明確的目的,并且因?yàn)槠涔δ苄詥我坏膬?yōu)點(diǎn)而突出墩弯;一個(gè) symbol 實(shí)例可以被賦值到一個(gè)左值變量吩跋,還可以通過(guò)標(biāo)識(shí)符檢查類型,這就是它的全部特性渔工。不能對(duì)該類型實(shí)例使用其他操作符(將“Symbol”類型的實(shí)例與 “Number” 類型的實(shí)例對(duì)比锌钮,例如整數(shù) 42,該實(shí)例就具有將值與其他類型的值進(jìn)行比較或組合的運(yùn)算符)引矩。
一個(gè)具有數(shù)據(jù)類型 “symbol” 的值可以被稱為 “符號(hào)類型值”梁丘。在 JavaScript 運(yùn)行時(shí)環(huán)境中,一個(gè)符號(hào)類型值可以通過(guò)調(diào)用函數(shù) Symbol() 創(chuàng)建旺韭,這個(gè)函數(shù)動(dòng)態(tài)地生成了一個(gè)匿名氛谜,唯一的值。Symbol類型唯一合理的用法是用變量存儲(chǔ) symbol的值区端,然后使用存儲(chǔ)的值創(chuàng)建對(duì)象屬性值漫。
0.6.3關(guān)系
使用方法:直接使用symbol()創(chuàng)建新的symbol類型,并用一個(gè)可選的字符串作為其描述织盼。
0.7對(duì)象
0.7.1定義
對(duì)象是七個(gè)原始類型中最復(fù)雜的數(shù)據(jù)類型杨何。數(shù)組、函數(shù)沥邻、正則表達(dá)式都屬于對(duì)象類型危虱。
對(duì)象是普通鍵值對(duì)的集合,是一種無(wú)序的復(fù)合數(shù)據(jù)集合谋国。
0.7.2屬性
JavaScript用一個(gè){……}表示對(duì)象槽地,鍵值對(duì)以xxx:yyy形式申明,用“芦瘾,”隔開(kāi)捌蚊,xxx是鍵名,通常稱為“屬性”近弟,如果一個(gè)屬性的值是函數(shù)缅糟,通常把這個(gè)屬性稱為方法,它可以像函數(shù)意義調(diào)用祷愉,yyy是鍵值窗宦,可以是任何數(shù)據(jù)類型赦颇。
如果一個(gè)屬性的值還是一個(gè)對(duì)象,就形成了鏈?zhǔn)揭谩?/p>
0.7.3方法
屬性的讀雀昂媒怯;屬性的賦值;屬性和值的查看髓窜;屬性的刪除扇苞;屬性是否存在;屬性的遍歷寄纵;對(duì)象的引用鳖敷。
數(shù)組的讀取程拭;數(shù)組的賦值定踱;數(shù)組的length屬性;數(shù)組的空位恃鞋;屬性是否存在崖媚;數(shù)組的遍歷。
函數(shù)的聲明恤浪;函數(shù)的重復(fù)聲明至扰;函數(shù)的調(diào)用;函數(shù)的參數(shù)资锰;函數(shù)的參數(shù)默認(rèn)值;argument對(duì)象阶祭;函數(shù)的遞歸和return語(yǔ)句绷杜;函數(shù)名的提升;函數(shù)的屬性和方法濒募;變量作用域鞭盟。
參考:https://zhuanlan.zhihu.com/p/48637522