關(guān)于類(lèi)型

在JavaScript語(yǔ)言中,有7種語(yǔ)言類(lèi)型,他們分別是:

  • Undefined
  • Null
  • Boolean
  • Number
  • String
  • Object
  • Symbol(ES6中新加)

下面我們一個(gè)個(gè)來(lái)看:

Undefined

Undefined表示未定義,他的值只有一個(gè),就是undefined。在JavaScript中,任何變量在賦值前都是Undefined類(lèi)型,值為undefined。
根據(jù)他的意義,我們一般不會(huì)把undefined賦給一個(gè)值,從而確保所有undefined的值都處于定義了沒(méi)有賦值的狀態(tài)。
值得注意的是,在JavaScript中,undefined是一個(gè)變量,而不是關(guān)鍵字,所以我們?yōu)榱吮苊鈛ndefined被篡改,我們通常會(huì)使用void 0來(lái)代替undefined。

Null

Null表示定義了但為空,他的值也只有一個(gè)就是null。和undefined不同的是,null是一個(gè)關(guān)鍵字,所以可以放心使用。

Boolean

布爾類(lèi)型有兩個(gè)值,分別為true和false,分別代表真假。

Number

數(shù)字類(lèi)型總共有18437736874454810627(就是:2^64 - 2^53+3)個(gè)。
他有三個(gè)額外的數(shù)值:

  • NaN
  • Infinity(無(wú)窮大)
  • -Infinity(負(fù)無(wú)窮大)
    后面兩個(gè)數(shù)值的引入主要是為了不讓除以0出錯(cuò)。(JavaScript中有+0和-0的區(qū)別)
    因?yàn)镴avaScript的非整數(shù)是根據(jù)浮點(diǎn)數(shù)定義的,所以非整數(shù)的類(lèi)型無(wú)法用==(===更不行)來(lái)比較,最為著名的就是0.1+0.2 == 0.3這段代碼的輸出為false,我們可以用最小精度值來(lái)進(jìn)行比較:
    Math.abs(0.1+0.2-0.3) <= Number.EPSILON

String

字符串,值得注意的是,他有一個(gè)最大長(zhǎng)度的限制:2^53 - 1。

Object

Object表示對(duì)象,他可以被視為一切物體的總稱(chēng)。
甚至于JavaScript中的基本類(lèi)型,在對(duì)象類(lèi)型中我們都可以找到對(duì)應(yīng)的對(duì)象:

  • Boolean
  • Number
  • String
  • Symbol
    值得注意的是,當(dāng)我們執(zhí)行下面這段代碼true === new Boolean(true),我們會(huì)發(fā)現(xiàn)他返回的結(jié)果是false,等號(hào)的兩邊一個(gè)是布爾類(lèi)型的true,另一邊確是一個(gè)對(duì)象。(Symbol比較特殊,直接new會(huì)報(bào)錯(cuò))
    有了上面這個(gè)對(duì)象,我們甚至可以給基本類(lèi)型來(lái)增加一些臨時(shí)的方法。
String.prototype.sayHi = () => console.log('hello world');
'test'.sayHi();

我們可以看到在控制臺(tái)真的打印出來(lái)了hello world。

Symbol

這是一個(gè)ES6新引入的類(lèi)型,他在對(duì)象中存在,但是卻不能用new的方式來(lái)生成一個(gè)新的Symbol,我們可以通過(guò)傳入一個(gè)key來(lái)對(duì)他進(jìn)行賦值,我們可以這樣來(lái)使用他:
  let symbol1 = Symbol('test');
值得注意的是,即使我們創(chuàng)建兩個(gè)Symbol('test'),這兩個(gè)symbol也是不相等的。

類(lèi)型轉(zhuǎn)換

作為一門(mén)弱類(lèi)型語(yǔ)言,JavaScript的==運(yùn)算會(huì)實(shí)現(xiàn)跨類(lèi)型的比較,這經(jīng)常會(huì)造成一些判斷的失誤,在我們真實(shí)的工作場(chǎng)景中,經(jīng)常會(huì)要求程序員對(duì)類(lèi)型轉(zhuǎn)換后使用===來(lái)判斷左右兩邊的相等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容