這裏是修真院前端小課堂,每篇分享文從html
【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】前端
八個方面深度解析前端知識/技能,本篇分享的是:git
【js中的基本類型和引用類型有哪些,有什麼區別?】程序員
你們好,我是IT修真院鄭州分院第8期學員,一枚正直善良的web程序員。github
今天給你們分享一下,修真院官網js任務1中可能會使用到的知識點:web
1.背景介紹
函數
基本數據類型:按值訪問,可操做保存在變量中的實際的值。基本類型值指的是簡單的數據段。編碼
基本數據類型有這五種:Undefined、Null、String、Number、Boolean。操作系統
引用類型:當複製保存着對象的某個變量時,操做的是對象的引用,但在爲對象添加屬性時,操做的是實際的對象。引用類型值指那些可能爲多個值構成的對象。引用類型值指那些可能爲多個值構成的對象。指針
引用類型有這幾種:object、Array、RegExp、Date、Function、特殊的基本包裝類型(String、Number、Boolean)以及單體內置對象(Global、Math)。
2.知識剖析
1.Number
Number類型包含整數和浮點數(浮點數數值必須包含一個小數點,且小數點後面至少有一位數字)兩種值。
NaN:非數字類型。兩大特色:1.涉及到的 任何關於NaN的操做,都會返回NaN。2. NaN不等於自身。
isNaN() 函數用於檢查其參數是不是非數字值
2.String
字符串是存儲字符的變量,由雙引號(" ")或單引號(' ')表示
字符串有length屬性。能夠取得字符串的長度。
字符串轉換:轉型函數String(),適用於任何數據類型(null,undefined 轉換後爲null和undefined);toString()方法(null,undefined沒有toString()方法)。
3.Boolean
只有兩個值,true和false;在運算中true=1,false=0。
4.Undefined
只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個變量的值就是undefined。
5.Null
也是隻有一個值的數據類型,null值表示一個空對象指針,使用typeof操做符檢測null值會返回"object"
6.常見的引用類型
Object類型:帶有屬性和方法的特殊數據類型。
Array:是使用單獨的變量名來存儲一系列的值。
Function:函數類型在JavaScript中也是對象。
7.基本類型和引用類型的區別
基本類型的變量是存放在棧區的(棧區指內存裏的棧內存);
引用類型的值是同時保存在棧內存和堆內存中的對象;
基本類型的比較是值的比較;
引用類型的比較是引用的比較;
3.常見問題
4.解決方案
5.編碼實戰
6.擴展思考
1.Null和Undefined的區別?
null和undefined基本同義,只有一些細微的差異。
null表示「沒有對象」,即該處不該該有值。
(1) 做爲函數的參數,表示該函數的參數不是對象。
(2) 做爲對象原型鏈的終點。
undefined表示缺乏值,此處應該有值,可是尚未定義。
(1)變量被聲明瞭,但沒有賦值時,就等於undefined。
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。
(3)對象沒有賦值的屬性,該屬性的值爲undefined。
(4)函數沒有返回值時,默認返回undefined。
2.NaN是什麼?
NaN表示一個元素可不是數值,isNaN()用於判斷元素是否爲數字的函數,是的話返回false,不是數字返回true。NaN和任何值比較都不相等。
3.什麼是棧內存,什麼是堆內存,二者有什麼區別?
棧內存:由程序自動向操做系統申請分配以及回收,速度快,使用方便,但程序員沒法控制。若分配失敗,則提示棧溢出錯誤。注意,const局部變量也儲存在棧區內,棧區向地址減少的方向增加。
堆內存:程序員向操做系統申請一塊內存,當系統收到程序的申請時,會遍歷一個記錄空閒內存地址的鏈表,尋找第一個空間大於所申請空間的堆結點,而後將該結點從空閒結點鏈表中刪除,並將該結點的空間分配給程序。分配的速度較慢,地址不連續,容易碎片化。此外,由程序員申請,同時也必須由程序員負責銷燬,不然則致使內存泄露。
關於堆和棧區別的比喻:
堆和棧的區別能夠引用一位前輩的比喻來看出:使用棧就象咱們去飯館裏吃飯,只管點菜(發出申請)、付錢、和吃(使用),吃飽了就走,沒必要理會切菜、洗菜等準備工做和洗碗、刷鍋等掃尾工做,他的好處是快捷,可是自由度小。使用堆就象是本身動手作喜歡吃的菜餚,比較麻煩,可是比較符合本身的口味,並且自由度大。
更多討論
PPT:https://it-xzy.github.io/WEB-...