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、undefined、number、string、boolean、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è)圖:

因此,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é)。
參考文章
-
原始數(shù)據(jù) —— MDN
-
JavaScript 深入了解基本類型和引用類型的值
-
JavaScript的數(shù)據(jù)類型及其檢測(cè)
-
undefined與null的區(qū)別
http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html