[JS開發(fā)者應(yīng)懂的33個(gè)概念]2.基本數(shù)據(jù)類型

Javascript數(shù)據(jù)類型 之 基本數(shù)據(jù)類型

在JavaScript中,數(shù)據(jù)類型主要分為兩種 :基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。這里主要講解關(guān)于基本數(shù)據(jù)類型的相關(guān)知識(shí)點(diǎn)。

分類

基本數(shù)據(jù)類型主要分為7種,它們分別是 null、undefinednumber、stringboolean、symbol(ES6新增基本數(shù)據(jù)類型)、bigint(也是新增的基本數(shù)據(jù)類型,但仍在提案階段,它是除number以外第二個(gè)數(shù)值類數(shù)據(jù)類型)

具體可以查看MDN —— https://developer.mozilla.org/zh-CN/docs/Glossary/Primitive

特點(diǎn)

對(duì)于基本數(shù)據(jù)類型,它有以下這些特點(diǎn):

  • 按值訪問(wèn),值不可以被改變但可以被替換。

  • 它的值存放在棧內(nèi)存中。

為什么說(shuō)值是不可改變的?

我們來(lái)看一個(gè)例子:

var str = "demo"
console.log(str)  // dmeo
str.toUpperCase()
console.log(str)  // demo

可以看到,兩次輸出的值都是demo。如果是賦值操作呢?

// 緊接上述例子
str = str.toUpperCase()
console.log(str)  // DEMO

可以看到,這里輸出的結(jié)果是DEMO。但這并是不因它的值被改變了,前者str和后者str其實(shí)是兩個(gè)不同的內(nèi)存空間。在JavaScript中,賦值操作就等于新開辟了一處內(nèi)存空間。我們看下面這個(gè)圖:

image

因此,str的值準(zhǔn)確的說(shuō)是被替換了,而不是改變了。

值的比較

我們來(lái)看一個(gè)例子:

var a = 1;
var b = "1";
console.log(a == b) // true
console.log(a === b) // false

"==" 與 "===" 的簡(jiǎn)單區(qū)別

== :只對(duì)值進(jìn)行比較,會(huì)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換

===:不僅對(duì)值進(jìn)行比較,而且還會(huì)對(duì)類型進(jìn)行比較

null 與 undefined

這兩者都是JavaScript中的基本數(shù)據(jù)類型,似乎兩者很相似,但還是有一些不同點(diǎn)的。

null是等于空值,俗稱“空指針對(duì)象”,因此它是屬于一個(gè)對(duì)象聲明且被定義了,而其定義的值就是“空值”;

undefined是表示根本不存在,還未被定義。

下面看一個(gè)例子簡(jiǎn)單理解:

var x;
console.log(x) // undefined
console.log(typeof x) // undefined
var y = null;
console.log(y) // null
console.log(typeof y)  // object

可以看到,x是屬于聲明未定義,因此輸出是undefined類型;而y是屬于聲明且定義了,因此輸出是null。

typeof是用于判斷數(shù)據(jù)類型的,但因?yàn)閚ull屬于空指針對(duì)象,因此使用typeof判斷null的類型數(shù)據(jù)時(shí)返回的是object。

bigint

BigInt是JavaScript中一個(gè)新的基本數(shù)據(jù)類型,它的出現(xiàn)主要是因?yàn)樵贘avaScript中一直缺少處理整數(shù)的數(shù)據(jù)類型,同時(shí)在處理大整數(shù)的時(shí)候也會(huì)出現(xiàn)各種問(wèn)題。BigInt主要是為了解決大整數(shù)的存儲(chǔ)和處理等問(wèn)題。

此處不再展開,本人對(duì)JavaScript處理數(shù)字這塊并沒(méi)有深入研究,只知道對(duì)于小數(shù)和大整數(shù)的處理時(shí)經(jīng)常會(huì)有一些奇奇怪怪的問(wèn)題。之后仍需對(duì)這塊知識(shí)進(jìn)行學(xué)習(xí)...

關(guān)于基本數(shù)據(jù)類型想到的知識(shí)點(diǎn)暫時(shí)只有這些,如果有什么錯(cuò)誤之處或者不足之處希望大家可以指出或進(jìn)行補(bǔ)充。之后會(huì)對(duì)引用數(shù)據(jù)類型進(jìn)行總結(jié)。

參考文章

  1. 原始數(shù)據(jù) —— MDN

    https://developer.mozilla.org/zh-CN/docs/Glossary/Primitive

  2. JavaScript 深入了解基本類型和引用類型的值

    https://segmentfault.com/a/1190000006752076

  3. JavaScript的數(shù)據(jù)類型及其檢測(cè)

    https://alili.tech/archive/iaieh127g4r/

  4. undefined與null的區(qū)別

    http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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