JavaScript數(shù)據(jù)類型

JavaScript語(yǔ)言的每一個(gè)值都屬于一種數(shù)據(jù)類型叁巨,共有7種類型。如下:
數(shù)值(number)呐籽、字符串(string)俘种、布爾值(boolean)、符號(hào)(symbol)绝淡、null宙刘、undefined、對(duì)象(object)牢酵。

1悬包、number:整數(shù)和小數(shù)。

JavaScript對(duì)整數(shù)提供四種進(jìn)制的表示方法:十進(jìn)制馍乙、二進(jìn)制布近、十六進(jìn)制、二進(jìn)制丝格。

  • 十進(jìn)制:沒(méi)有前導(dǎo) 0 的數(shù)值撑瞧。
1.23e2    // 123
.1        // 0.1
1+.1      // 1.1
  • 二進(jìn)制:有前綴0b或0B開(kāi)頭的數(shù)值
ob1       // 1
ob10      // 2
ob11      // 3
  • 八進(jìn)制:以0開(kāi)頭且只用到0-7的八個(gè)阿拉伯?dāng)?shù)值。
011       // 9
  • 十六進(jìn)制:有前綴0x或0X的數(shù)值
ox11      // 17

默認(rèn)情況下显蝌,JavaScript內(nèi)部會(huì)自動(dòng)將八進(jìn)制预伺、十六進(jìn)制、二進(jìn)制轉(zhuǎn)為十進(jìn)制曼尊。

2酬诀,string:就是零個(gè)或多個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中骆撇。

'abc'
"abc"

單引號(hào)字符串的內(nèi)部可以使用雙引號(hào)瞒御,雙引號(hào)字符串之間可以使用單引號(hào)。

'key = "value" '
" It's a long journey "      

如果要在單引號(hào)字符串的內(nèi)部使用單引號(hào)神郊,就必須在內(nèi)部的單引號(hào)前加(反斜杠 \) 用來(lái)轉(zhuǎn)義肴裙,雙引號(hào)也是如此趾唱。

轉(zhuǎn)義

var a = ' \' '       //  單引號(hào) '
var a = ' \n '       //  表回車(chē)
var a = ' \t '       //  Table(制表符)
var a = ' \\ '       //  表反斜杠 \

如果是多行字符串,可以在每一行末尾使用反斜杠\按enter鍵換行蜻懦。

var a = ' 123 \
          456 ';
//  這樣可換行

也可用 +

var a = ' 123 '  +
        ' 456 ';

如果這樣寫(xiě)嫌麻煩的話甜癞,ES6規(guī)定使用 (反引號(hào) `)什么都不用寫(xiě),直接按回車(chē)阻肩。

var a = ` 12345
          67890 `;

3带欢,boolean:布爾值代表“真”和“假”兩個(gè)狀態(tài)。只有兩個(gè)值:真true烤惊,假false乔煞。

下列運(yùn)算符會(huì)返回布爾值:
前置邏輯運(yùn)算符: ! (Not)
相等運(yùn)算符:===,!==柒室,==渡贾,!=
比較運(yùn)算符:>,>=雄右,<空骚,<=
如果 JavaScript 預(yù)期某個(gè)位置應(yīng)該是布爾值,會(huì)將該位置上現(xiàn)有的值自動(dòng)轉(zhuǎn)為布爾值擂仍。轉(zhuǎn)換規(guī)則是除了下面六個(gè)值被轉(zhuǎn)為false囤屹,其他值都視為true。

undefined
null
false
0
NaN
""或''(空字符串)

注意逢渔,空數(shù)組([])和空對(duì)象({})對(duì)應(yīng)的布爾值肋坚,都是true

4,null和undefined:都可以表示沒(méi)有肃廓。

null表示空值智厌,即該處的值現(xiàn)在為空。調(diào)用函數(shù)時(shí)盲赊,某個(gè)參數(shù)未設(shè)置任何值铣鹏,這時(shí)就可以傳入null,表示該參數(shù)為空哀蘑。比如诚卸,某個(gè)函數(shù)接受引擎拋出的錯(cuò)誤作為參數(shù),如果運(yùn)行過(guò)程中未出錯(cuò)递礼,那么這個(gè)參數(shù)就會(huì)傳入null惨险,表示未發(fā)生錯(cuò)誤。
undefined表示“未定義”脊髓。
他兩區(qū)別:
1,變量沒(méi)有賦值 --undefined;

var n   //  n = undefined

2栅受,如果有一個(gè)對(duì)象object将硝,不想給值恭朗,那就給一個(gè)null,表示空對(duì)象

var obj =null    // 只想有一個(gè)對(duì)象依疼,但沒(méi)賦值

有一個(gè)非對(duì)象object痰腮,不想給值,可給一個(gè)undefined律罢。表示不確定對(duì)象是什么比如是空字符串或者空數(shù)值就想給它一個(gè)空膀值,那么就給一個(gè)undefined。(這是一種慣例)

5误辑,object:對(duì)象就是一組“鍵值對(duì)”(key-value)的集合沧踏,是一種無(wú)序的復(fù)合數(shù)據(jù)集合。

對(duì)象的所有鍵名都是字符串(ES6 又引入了 Symbol 值也可以作為鍵名)巾钉,所以加不加引號(hào)都可以翘狱。

var person = {
      'name' = ' tom ',
      'gender' = 'male',
    }

取值 person.['name']時(shí)單引號(hào)不能省略,否側(cè)瀏覽器可能不認(rèn)識(shí)報(bào)錯(cuò)砰苍。

如果鍵名是數(shù)值潦匈,會(huì)被自動(dòng)轉(zhuǎn)為字符串。
如果鍵名不符合標(biāo)識(shí)名的條件(比如第一個(gè)字符為數(shù)字赚导,或者含有空格或運(yùn)算符)茬缩,且也不是數(shù)字,則必須加上引號(hào)吼旧,否則會(huì)報(bào)錯(cuò)凰锡。
空字符串也可做key。最好在左邊鍵名加上引號(hào)黍少,以免不必要的BUG寡夹。

查看一個(gè)對(duì)象本身的所有屬性,可以使用Object.keys方法厂置。
var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']
delete命令用于刪除對(duì)象的屬性菩掏,刪除成功后返回true。
var obj = { p: 1 };
Object.keys(obj) // ["p"]

delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
in運(yùn)算符用于檢查對(duì)象是否包含某個(gè)屬性(注意昵济,檢查的是鍵名智绸,不是鍵值),如果包含就返回true访忿,否則返回false瞧栗。它的左邊是一個(gè)字符串,表示屬性名海铆,右邊是一個(gè)對(duì)象迹恐。
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
for...in循環(huán)用來(lái)遍歷一個(gè)對(duì)象的全部屬性。
var person ={ 
             name: 'tom' ,
             age': 18,
  }
      for (var key in person){
         console.log(key)
      }
// name
// age

打出來(lái)的東西順序不固定卧斟。

打出value:

var person ={ 
             name: 'tom' ,
             age: 18,
  }
for (var key in person){
   console.log(person[key])
  }
// tom
// 18

打出key,value:

var person ={ 
             name: 'tom' ,
             age': 18,
  }
for (var key in person){
   console.log(key,person[key])
  }
// name tom
// age 18
typeof運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類型殴边。

數(shù)值憎茂、字符串、布爾值分別返回number锤岸、string竖幔、boolean。

typeof 123      // "number"
typeof '123'    // "string"
typeof false    // "boolean"

函數(shù)返回function是偷。

function f() {}
typeof f
// "function"

undefined返回undefined拳氢。

typeof undefined
// "undefined"

對(duì)象返回object、空數(shù)組([])的類型也是objectull返回object蛋铆。

typeof window   // "object"
typeof {}       // "object"
typeof []       // "object"

null返回object

typeof null     // "object"

null的類型是object馋评,這是由于歷史原因造成的。1995年的 JavaScript 語(yǔ)言第一版戒职,只設(shè)計(jì)了五種數(shù)據(jù)類型(對(duì)象栗恩、整數(shù)、浮點(diǎn)數(shù)洪燥、字符串和布爾值)磕秤,沒(méi)考慮null,只把它當(dāng)作object的一種特殊值捧韵。后來(lái)null獨(dú)立出來(lái)市咆,作為一種單獨(dú)的數(shù)據(jù)類型,為了兼容以前的代碼再来,typeof null返回object就沒(méi)法改變了蒙兰。

6,symbol:ES6 引入了一種新的原始數(shù)據(jù)類型Symbol芒篷,表示獨(dú)一無(wú)二的值搜变。

Symbol 值通過(guò)Symbol函數(shù)生成。這就是說(shuō)针炉,對(duì)象的屬性名現(xiàn)在可以有兩種類型挠他,一種是原來(lái)就有的字符串,另一種就是新增的 Symbol 類型篡帕。凡是屬性名屬于 Symbol 類型殖侵,就都是獨(dú)一無(wú)二的,可以保證不會(huì)與其他屬性名產(chǎn)生沖突镰烧。
注意拢军,Symbol函數(shù)前不能使用new命令,否則會(huì)報(bào)錯(cuò)怔鳖。這是因?yàn)樯傻?Symbol 是一個(gè)原始類型的值茉唉,不是對(duì)象。也就是說(shuō),由于 Symbol 值不是對(duì)象赌渣,所以不能添加屬性魏铅〔蹋基本上坚芜,它是一種類似于字符串的數(shù)據(jù)類型。
更多參考:ECMAScript 6入門(mén)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末斜姥,一起剝皮案震驚了整個(gè)濱河市鸿竖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铸敏,老刑警劉巖缚忧,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杈笔,居然都是意外死亡闪水,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)蒙具,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)球榆,“玉大人,你說(shuō)我怎么就攤上這事禁筏〕侄ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵篱昔,是天一觀的道長(zhǎng)每强。 經(jīng)常有香客問(wèn)我,道長(zhǎng)州刽,這世上最難降的妖魔是什么空执? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮穗椅,結(jié)果婚禮上辨绊,老公的妹妹穿的比我還像新娘。我一直安慰自己房待,他們只是感情好邢羔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著桑孩,像睡著了一般拜鹤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上流椒,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天敏簿,我揣著相機(jī)與錄音,去河邊找鬼。 笑死惯裕,一個(gè)胖子當(dāng)著我的面吹牛温数,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜻势,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撑刺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了握玛?” 一聲冷哼從身側(cè)響起够傍,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挠铲,沒(méi)想到半個(gè)月后冕屯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拂苹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年安聘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢棒。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浴韭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出音羞,到底是詐尸還是另有隱情囱桨,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布嗅绰,位于F島的核電站舍肠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窘面。R本人自食惡果不足惜翠语,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望财边。 院中可真熱鬧肌括,春花似錦、人聲如沸酣难。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)憨募。三九已至紧索,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菜谣,已是汗流浹背珠漂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工晚缩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人媳危。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓荞彼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親待笑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸣皂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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