JavaScript中的幾種數(shù)據(jù)類型

JavaScript定義了幾種數(shù)據(jù)類型砾脑?哪些是原始類型惨撇?原始類型和復(fù)雜類型的區(qū)別是什么葵萎?
ECMAScript中有5種簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined,Null,Boolean,Number,String.
其中Boolen,Number,String為原始數(shù)據(jù)類型分蓖,Undefined,Null一般將其看為特殊值异吻。
1種復(fù)雜數(shù)據(jù)類型:Object.
Object本質(zhì)上是由一組無序的名值對組成的裹赴。
ES6中新出了一個Symbol類型
ECMAScirpt不支持任何創(chuàng)建自定義類型的機(jī)制,而所有值最終都將是上述7種數(shù)據(jù)類型之一棋返。

  • Unndefined類型:該類型只有一個值延都,即特殊的undefined。在使用var聲明變量但未對其加以初始化時睛竣,這個變量的值就是undefined窄潭。無論在什么情況下都沒有必要把一個變量的值顯式地設(shè)置為undefined
  • Nunll類型:該類型同樣只有一個值酵颁,即null嫉你。從邏輯角度來看,null表示一個空的之爭對象躏惋,而這也正式使用typeof操作符檢測null值時會返回object的原因幽污。事實(shí)上,undefined值是派生自null值的簿姨。如下所示:
alert( null == undefined);    //true

盡管nullundefined有這樣的關(guān)系距误,但它們的用途完全不同。只要意在保存對象的變量還沒有真正保存對象扁位,就該明確的讓該變量保存null值准潭。這樣不僅可以體現(xiàn)null作為空對象指針的慣例,而且也有助于進(jìn)一步區(qū)分nullundefined域仇。

  • Boolean類型:該類型有兩個值:truefalse刑然,并且著兩個值是區(qū)分大小寫的。ECMAScript中所有類型的值都有與這兩個Boolean值等價的值暇务,這些轉(zhuǎn)換規(guī)則對理解流控制語句(如if語句)自動執(zhí)行相應(yīng)的Boolean轉(zhuǎn)換非常重要:
數(shù)據(jù)類型 轉(zhuǎn)換為true的值 轉(zhuǎn)換為false的值
Boolean true false
String 任何非空字符串 " "(空字符串)
Number 任何非零數(shù)字值(包括無窮大) 0 和 NAN
Object 任何對象 null
Undefined n/a(不適用) undefined
  • Number類型:最基本的數(shù)值字面量格式是十進(jìn)制整數(shù)泼掠,整數(shù)還可以通過八進(jìn)制、十六進(jìn)制來表示垦细,如下寫法:
var intNum = 55;    十進(jìn)制整數(shù)
var octalNum1 = 070;      八進(jìn)制整數(shù)——56择镇,第一位必須是 0 然后是八進(jìn)制數(shù)字序列(0-7)
var octalNum2 = 079;      無效的八進(jìn)制數(shù)值,解析為十進(jìn)制79
var hexNum1 = 0xA;      十六進(jìn)制整數(shù)——10括改,前兩位必須是0x腻豌,后跟任何十六進(jìn)制數(shù)字。其中嘱能,字母A~F可以大寫也可以小寫吝梅。
var hexNum2 = 0x1f;      十六進(jìn)制整數(shù)——31

在進(jìn)行算數(shù)計(jì)算時,所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值最終都將被轉(zhuǎn)換為十進(jìn)制數(shù)值焰檩。
Number類型中也包含了浮點(diǎn)數(shù)憔涉。所謂浮點(diǎn)數(shù)就是該數(shù)值中必須包含一個小數(shù)點(diǎn),并且小數(shù)點(diǎn)后面必須至少有一個數(shù)字析苫,雖然小數(shù)點(diǎn)前面可以沒有整數(shù)兜叨,但是不推薦這種寫法穿扳。
ECMASctipt中通常會將小數(shù)點(diǎn)后面帶有6個零以上的浮點(diǎn)數(shù)值轉(zhuǎn)換為以 e 表示法表示的數(shù)值(如0.0000003會被轉(zhuǎn)換成3e-7)。
浮點(diǎn)數(shù)值最高精度是17位小數(shù)国旷,但在進(jìn)行算數(shù)計(jì)算時其精確度遠(yuǎn)遠(yuǎn)不如整數(shù)矛物。例如:

var a = 0.1;
var b = 0.2;
alert(a+b);    //0.30000000000000004

在大多數(shù)瀏覽器中能保存的最小數(shù)值為5e-324;最大數(shù)值為1.7976931348623157e+308跪但。如果計(jì)算結(jié)果超出了這兩個值履羞,那么這個數(shù)值將自動轉(zhuǎn)換為特殊的Infinity值,正無窮為Infinity屡久,負(fù)無窮為-Infinity忆首。Infinity是不能參與計(jì)算的數(shù)值,用isFinite()函數(shù)可以測試一個數(shù)值是否在最大和最小數(shù)值之間被环,如果在則返回true糙及。
NaN,即非數(shù)值(Not a Number)是一個特殊的數(shù)值筛欢,這個數(shù)值用于表示一個本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會拋出錯誤了)浸锨。任何涉及到NaN的操作都會返回NaN,并且NaN與任何值都不相等版姑,包括NaN本身柱搜。通過isNaN()函數(shù)可以確定一個參數(shù)是否“不是數(shù)值”。

alert(isNaN(NaN));      //true
alert(isNaN(10));       //false(10是一個數(shù)值)
alert(isNaN("10"));     //false (可以被轉(zhuǎn)換為數(shù)值10)
alert(isNaN("blue"));   //true (不可以被轉(zhuǎn)換成數(shù)值)
alert(isNaN(true));     //false (可以被轉(zhuǎn)換成數(shù)值1)
  • String類型:用于表示由零個或多個16位Unicode字符組成的字符序列剥险,即字符串聪蘸。字符串可以由雙引號或單引號表示。但是雙引號開頭必須雙引號結(jié)尾炒嘲,單引號開頭單引號結(jié)尾宇姚。ECMAScript中字符串是不可變的,一旦創(chuàng)建夫凸,它們的值不可改變。必須通過銷毀—重新填充阱持,才能改變字符串的值夭拌。

  • Object類型:Object類型就是一組數(shù)據(jù)和功能的集合。在ECMAScript中Object類型是所有它的實(shí)例的基礎(chǔ)衷咽。換句話說鸽扁,Object類型所具有的任何屬性和方法也同樣存在與更具體的對象中。

  • 最新出了個Symbol的數(shù)據(jù)類型镶骗,其意義是生成一個全局唯一的值桶现。
    Symbol參考地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鼎姊,隨后出現(xiàn)的幾起案子骡和,更是在濱河造成了極大的恐慌相赁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慰于,死亡現(xiàn)場離奇詭異钮科,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)婆赠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門绵脯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人休里,你說我怎么就攤上這事蛆挫。” “怎么了妙黍?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵悴侵,是天一觀的道長。 經(jīng)常有香客問我废境,道長畜挨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任噩凹,我火速辦了婚禮巴元,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驮宴。我一直安慰自己逮刨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布堵泽。 她就那樣靜靜地躺著修己,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迎罗。 梳的紋絲不亂的頭發(fā)上睬愤,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機(jī)與錄音纹安,去河邊找鬼尤辱。 笑死,一個胖子當(dāng)著我的面吹牛厢岂,可吹牛的內(nèi)容都是我干的光督。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼塔粒,長吁一口氣:“原來是場噩夢啊……” “哼结借!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卒茬,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤船老,失蹤者是張志新(化名)和其女友劉穎咖熟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體努隙,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡球恤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荸镊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咽斧。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖躬存,靈堂內(nèi)的尸體忽然破棺而出张惹,到底是詐尸還是另有隱情,我是刑警寧澤岭洲,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布宛逗,位于F島的核電站,受9級特大地震影響盾剩,放射性物質(zhì)發(fā)生泄漏雷激。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一告私、第九天 我趴在偏房一處隱蔽的房頂上張望屎暇。 院中可真熱鬧,春花似錦驻粟、人聲如沸根悼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挤巡。三九已至,卻和暖如春酷麦,著一層夾襖步出監(jiān)牢的瞬間矿卑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工沃饶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粪摘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓绍坝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苔悦。 傳聞我的和親對象是個殘疾皇子轩褐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容