數(shù)據(jù)類(lèi)型

ECMAScript中有五種數(shù)據(jù)類(lèi)型(也稱(chēng)為基本數(shù)據(jù)類(lèi)型):Undefined、Null爆班、Boolean衷掷、Number和String。還有一種復(fù)雜數(shù)據(jù)類(lèi)型--Object蛋济,Object本職上是由一組無(wú)須的名值對(duì)組成的棍鳖。

  • typeof操作符
    使用typeof操作符可能返回下列某個(gè)字符串:
    a. "undefined" ——如果之歌值未定義;
    b. "boolean" ——如果這個(gè)值是布爾值碗旅;
    c. "string" ——如果這個(gè)值是個(gè)字符串渡处;
    d. "number" ——如果這個(gè)值是數(shù)值;
    e. "object" ——如果這個(gè)值時(shí)對(duì)象或null祟辟;
    f. "function" ——如果這個(gè)值時(shí)函數(shù)医瘫;
  • Undefined類(lèi)型
    Undefined類(lèi)型只有一個(gè)值,即特殊的undefined旧困。在聲明變量后并未對(duì)其進(jìn)行初始化(即賦值)時(shí)醇份,這個(gè)變量的值就是undefined。
  • Null類(lèi)型
    Null類(lèi)型也是一個(gè)只有一個(gè)值的數(shù)據(jù)類(lèi)型吼具,這個(gè)特殊的值時(shí)null僚纷。從邏輯角度講,null值表示一個(gè)空對(duì)象指針拗盒,這也是使用typeof操作符會(huì)返回object的原因怖竭。
    如果定義的變量準(zhǔn)備用來(lái)保存對(duì)象,那么最好將該變量初始化為null陡蝇,這樣一來(lái)痊臭,只要檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存好了一個(gè)對(duì)象的引用。
if (car != null) {
  // 對(duì)car對(duì)象執(zhí)行指定操作
}

實(shí)際上登夫,undefined值時(shí)派生自null值的广匙,所以它們的相等性測(cè)試要返回true。

console.log(null == undefined);  // true
  • Boolean類(lèi)型
    Boolean類(lèi)型是ECMAscript中使用的最多的一種類(lèi)型恼策。該類(lèi)型只有兩個(gè)字面值:true和false鸦致。
  • Number類(lèi)型
    Number類(lèi)型是ECMAScript中最令人關(guān)注的數(shù)據(jù)類(lèi)型,這種類(lèi)型使用IEEE754(一種浮點(diǎn)數(shù)表示標(biāo)準(zhǔn))來(lái)表示整數(shù)和浮點(diǎn)數(shù)值(浮點(diǎn)數(shù)值在某些語(yǔ)言中也被稱(chēng)為雙精度數(shù)值)。其支持幾種不同的數(shù)值字面量格式蹋凝。
    最基本的數(shù)值字面量格式是十進(jìn)制整數(shù)
var number = 55;

整數(shù)還可以通過(guò)八進(jìn)制或十六進(jìn)制的字面量來(lái)表示鲁纠。其中,八進(jìn)制字面值的第一位必須是0鳍寂,然后是八進(jìn)制數(shù)字序列(0~7)改含。如果字面值中的數(shù)值超出了范圍,那么前導(dǎo)0將被忽略迄汛,后面的數(shù)值將被當(dāng)做十進(jìn)制數(shù)值解析捍壤。

var number1 = 070; // 0*8^2+7*8^1+0*8^0=56;
var number2 = 079; //無(wú)效的八進(jìn)制數(shù)值——解析為79;
var number3 = 08; //無(wú)效的八進(jìn)制數(shù)值——解析為8;

八進(jìn)制字面量在嚴(yán)格模式下是無(wú)效的,會(huì)導(dǎo)致支持該模式的JavaScript引擎拋出錯(cuò)誤鞍爱。
十六進(jìn)制字面值的前兩位必須是0x鹃觉,后跟任何十六進(jìn)制數(shù)字(09及AF)。其中字母A~F可以大寫(xiě)也可以小寫(xiě)睹逃。

var num1 = 0xA; //十六進(jìn)制的10;
var num2 = 0x1f; //1*16^1+15*16^0=31;

再進(jìn)行算術(shù)計(jì)算時(shí)盗扇,所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值最終都會(huì)被轉(zhuǎn)換成十進(jìn)制數(shù)值。

  1. 浮點(diǎn)數(shù)值
    浮點(diǎn)數(shù)值就是指該數(shù)值中心必須包含一個(gè)小數(shù)點(diǎn)沉填,并且小數(shù)點(diǎn)后必須至少有一個(gè)數(shù)字疗隶。
    由于保存浮點(diǎn)數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,所以在一些情況下ECMAScript會(huì)將浮點(diǎn)數(shù)值轉(zhuǎn)換為整數(shù)值翼闹。當(dāng)小數(shù)點(diǎn)后沒(méi)有跟任何數(shù)字斑鼻,那么這個(gè)數(shù)值就可以當(dāng)做整數(shù)值來(lái)保存,同樣地猎荠,如果浮點(diǎn)數(shù)值本身表示的就是一個(gè)整數(shù)坚弱,那么該值也會(huì)被保存為整數(shù)值。
var num1 = 1.; //小數(shù)點(diǎn)后面沒(méi)有數(shù)字——解析為1;
var num2 = 1.0; //整數(shù)——解析為1;

對(duì)于那些極大或極小的數(shù)值关摇,可以用e表示法(即科學(xué)計(jì)數(shù)法)表示的浮點(diǎn)數(shù)值表示荒叶。用e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪。

var num = 3.125e7; //等于31250000;
  1. 數(shù)值范圍
    由于內(nèi)存的限制输虱,ECMAScript并不能保存世界上所有的值停撞。
    如果計(jì)算得到一個(gè)超出js數(shù)值范圍的值,那么這個(gè)數(shù)值將自動(dòng)轉(zhuǎn)換為特殊的infinity(正無(wú)窮)值悼瓮。如果是負(fù)數(shù)則轉(zhuǎn)換為-infinity(負(fù)無(wú)窮).
    要想確定一個(gè)數(shù)值是否是有窮的,可以使用isFinite()函數(shù)
console.log(isFinite(Number.MAX_VALUE)); //true
  1. NaN
    NaN艰猬,即非數(shù)值(Not a Number)是一個(gè)特殊的數(shù)值横堡,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。
    NaN有兩個(gè)特點(diǎn)冠桃。首先命贴,任何涉及NaN的操作都會(huì)返回NaN。其次,NaN與任何值都不相等胸蛛,包括NaN本身污茵。
alert(NaN == NaN); // false

針對(duì)NaN的兩個(gè)特點(diǎn),ECMAScript定義了isNaN()函數(shù)葬项。這個(gè)函數(shù)接受一個(gè)參數(shù)泞当,該參數(shù)可以是任何類(lèi)型。在接收到一個(gè)參數(shù)后民珍,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值襟士。某些不是數(shù)值的值會(huì)直接轉(zhuǎn)換為數(shù)值。而任何不能轉(zhuǎn)換為數(shù)值的值都會(huì)導(dǎo)致這個(gè)函數(shù)返回true

alert(isNaN(NaN)); //true;
alert(isNaN(10)); //false;
alert(isNaN('10')); //false;
alert(isNaN('red)); //true
alert(isNaN(true)); //false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嚷量,一起剝皮案震驚了整個(gè)濱河市陋桂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝶溶,老刑警劉巖嗜历,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抖所,居然都是意外死亡梨州,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)部蛇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摊唇,“玉大人,你說(shuō)我怎么就攤上這事涯鲁∠锊椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵抹腿,是天一觀的道長(zhǎng)岛请。 經(jīng)常有香客問(wèn)我,道長(zhǎng)警绩,這世上最難降的妖魔是什么崇败? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮肩祥,結(jié)果婚禮上后室,老公的妹妹穿的比我還像新娘。我一直安慰自己混狠,他們只是感情好岸霹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著将饺,像睡著了一般贡避。 火紅的嫁衣襯著肌膚如雪痛黎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天刮吧,我揣著相機(jī)與錄音湖饱,去河邊找鬼。 笑死杀捻,一個(gè)胖子當(dāng)著我的面吹牛井厌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播水醋,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼旗笔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了拄踪?” 一聲冷哼從身側(cè)響起蝇恶,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惶桐,沒(méi)想到半個(gè)月后撮弧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姚糊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年贿衍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片救恨。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贸辈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肠槽,到底是詐尸還是另有隱情擎淤,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布秸仙,位于F島的核電站嘴拢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寂纪。R本人自食惡果不足惜席吴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捞蛋。 院中可真熱鬧孝冒,春花似錦、人聲如沸拟杉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捣域。三九已至啼染,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焕梅,已是汗流浹背迹鹅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贞言,地道東北人斜棚。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像该窗,于是被迫代替她去往敵國(guó)和親弟蚀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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