js基礎陣營:變量篇之變量類型

前面我們已經說過了變量的提升,那么變量具體有哪些類型呢誊抛?
當前JavaScript具有5個基本數(shù)據(jù)類型,分別是:null,undefined,string,number,boolean贬堵。以及兩個非基礎數(shù)據(jù)類型,分別是:object结洼,symbol(ES6新增)黎做。下面我們來一一來介紹下
null
顧名思義是空,沒有的意思松忍,所以在js中他是一個空指針蒸殿,空值的意思。他不同于沒有定義(ReferenceError)以及定義未賦值(undefined)。通常我們用來定義一個對象為空的賦值宏所。那么如果我們通過typeof來查看null的類型會是什么值呢酥艳?

image.png

我們可以看到是一個object,而不是我們想象中的null楣铁。為什么呢?在我看來就是一個當年設計語言的時候為了靠近其他語言更扁,所以通過null來表明是一個空指針盖腕。那么我們如果判斷一個數(shù)據(jù)是否是null還是對象呢?我們可以通過以下代碼來實現(xiàn)

if(typeof data === 'object' && !data){
  // 這里就是null了
}

undefined
JavaScript中第二個特殊的變量就是undefined浓镜。通過我們定義了一個變量溃列,但是沒有初始化的時候,此時這個變量的值即為undefined膛薛。我們可以在控制臺看下以下代碼

var name;
typeof name; //undefined

那么如果我們一個變量沒有定義听隐,通過typeof來看是什么呢?

image.png

從程序的邏輯上來講是合理的哄啄,但是從我們日常開發(fā)來講這樣就很難通過typeof 來判斷是未定義還是未初始化雅任。所以我們在日常開發(fā)中需要養(yǎng)成將變量定義的時候初始化的習慣,這樣我們才能通過typeof來判斷數(shù)據(jù)的正確性咨跌。
boolean
布爾類型沪么,只有兩個值,不同于上面兩個只有一個值锌半,他永遠只有true以及false兩種情況禽车。通常我們在需要判斷的時候都需要使用布爾值。雖然布爾值只有true和false兩個值刊殉,但是在javascript中所有的值都有跟這兩個值相對等的值殉摔。我們可以通過顯式的方法Boolean來獲取。那么哪些值會對應的是true呢记焊?將在下一章變量的轉換中有講解(又挖了一個坑)逸月。
string
字符串,在js中通過通過“”或者‘’來創(chuàng)建遍膜,例如

var name = '二鍋頭';
var name2 = "二鍋頭"彻采;

在js中字符串是不可變的。也就是說在js中如果創(chuàng)建了一個變量且初始化了后捌归,值是不能改變肛响,如果改變則是先銷毀原有的值,然后創(chuàng)建新值后賦值給原有變量惜索。其實不難理解特笋,在前面我們已經說過了,字符串是非引用類型,也就是說我們存儲的值是直接存儲在內存中的猎物,當我們要去改變的時候必然要先去清除原有的值虎囚,才能賦值。所以我們在執(zhí)行以下代碼的時候是什么樣的呢蔫磨?

var name="二鍋頭";
name += '淘讥,你好';

按照我們先銷毀再賦值的理論堤如,我們可以明顯知道蒲列,在執(zhí)行這代碼的時候,編輯器先創(chuàng)建一個6位的字符串搀罢,存儲二鍋頭蝗岖,你好然后將原有的name值的二鍋頭銷毀后再將6位的字符串賦值給name.在低版本的瀏覽器中我們其實能感受這個過程,因為在某些低版本瀏覽器中會很慢榔至。
number
數(shù)字抵赢,包括整數(shù)以及浮點數(shù)兩類。整個number類型本身是沒有什么可講解的唧取,其更多的是在數(shù)值轉換上铅鲤,我們將在下章講解。但是關于浮點數(shù)有一個很常見的問題枫弟,那就是浮點數(shù)的精度問題彩匕,我們來看一下代碼

0.1 + 0.2 === 0.3

在我們的認知中應該是true,但是實際上不是,實際上返回的值是false媒区。為什么呢驼仪?歸根到底就是因為精度問題,由于js的浮點數(shù)的精度是17位袜漩,所以其精度根本無法與整數(shù)相比绪爸。所以才會導致此類問題的出現(xiàn)。這個時候我們不僅僅要擔心宙攻,是不是浮點數(shù)都這樣奠货,大可不必,大多數(shù)的情況下數(shù)據(jù)是不會出現(xiàn)問題的座掘,那么我們如何能將上面的代碼變成true呢递惋?此時我們需要使用ES6中的EPSILON(機器精度)。因此我們可以使用以下方法來處理上面的問題

function test(n1,n2) {
   return Math.abs(n1- n2) <  Number.EPSILON
}
test(0.3,(0.1 + 0.2));

object
對象溢陪,其實就是數(shù)據(jù)和功能的有序集合萍虽。對象的創(chuàng)建不同于前面的幾個類型的數(shù)據(jù),通常對象的創(chuàng)建需要借助于對象類型來創(chuàng)建形真。例如:

var person = new Object();

但是在實際的日常工作中杉编,我們很少這樣定義,通常通過一個{}來定義,例如:

var person = {};

兩者都能創(chuàng)建出一個對象邓馒。
至此我們關于js中的變量類型都已經說明完成了嘶朱,其實還有一個symbol對象沒有說明,此類型我們將在后面ES6篇章中詳細說明光酣。下一章我們將開啟類型轉換疏遏。敬請期待

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市救军,隨后出現(xiàn)的幾起案子财异,更是在濱河造成了極大的恐慌,老刑警劉巖缤言,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宝当,死亡現(xiàn)場離奇詭異视事,居然都是意外死亡胆萧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門俐东,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跌穗,“玉大人,你說我怎么就攤上這事虏辫“鑫” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵砌庄,是天一觀的道長羹唠。 經常有香客問我,道長娄昆,這世上最難降的妖魔是什么佩微? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮萌焰,結果婚禮上哺眯,老公的妹妹穿的比我還像新娘。我一直安慰自己扒俯,他們只是感情好奶卓,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撼玄,像睡著了一般夺姑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掌猛,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天瑟幕,我揣著相機與錄音,去河邊找鬼。 笑死只盹,一個胖子當著我的面吹牛辣往,可吹牛的內容都是我干的。 我是一名探鬼主播殖卑,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼站削,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孵稽?” 一聲冷哼從身側響起许起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菩鲜,沒想到半個月后园细,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡接校,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年猛频,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛛勉。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹿寻,死狀恐怖,靈堂內的尸體忽然破棺而出诽凌,到底是詐尸還是另有隱情毡熏,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布侣诵,位于F島的核電站痢法,受9級特大地震影響,放射性物質發(fā)生泄漏杜顺。R本人自食惡果不足惜财搁,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哑舒。 院中可真熱鬧妇拯,春花似錦、人聲如沸洗鸵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膘滨。三九已至甘凭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間火邓,已是汗流浹背丹弱。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工德撬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躲胳。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓蜓洪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坯苹。 傳聞我的和親對象是個殘疾皇子隆檀,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內容