關(guān)于類型

在JavaScript語言中,有7種語言類型,他們分別是:

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

下面我們一個個來看:

Undefined

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

Null

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

Boolean

布爾類型有兩個值,分別為true和false,分別代表真假。

Number

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

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

String

字符串,值得注意的是,他有一個最大長度的限制:2^53 - 1。

Object

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

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

我們可以看到在控制臺真的打印出來了hello world。

Symbol

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

類型轉(zhuǎn)換

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

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

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

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