ECMAScript變量可能包含兩種不一樣數據類型的值:基本類型值和引用類型值,基本類型值指的是簡單的數據段,而引用類型值指那些可能由多個值構成的對象。程序員
在將一個值賦給變量時,解析器必須肯定這個值是基本類型值仍是引用類型值,基本類型值有:Undefined,Null,Boolean,Number和String。這5種基本數據類型是按值訪問的,由於能夠操做保存在變量種的實際值函數
基本數據類型都是單一的值(「hello」,123)值與值之間沒有任何聯繫,若使用基本數據類型的數據,咱們所所建立的變量都是獨立的,不能成爲一個總體spa
引用類型的值是保存在內存中的對象,Javascript不容許直接訪問內存中的位置,(不能直接操做對象的內存空間。在操做對象時,其實是在操做對象的引用而不是實際的對象,故引用類型的值是按引用訪問的,其中引用類型有(Object,Array,RegExp,Date,Function,特殊的基本包裝類型(String,Number,Boolean)以及單體內置對象(Global,Math)操作系統
1.Number指針
Number類型包含整數和浮點數(浮點數數值必須包含一個小數點,且小數點後面至少有一位數字對象
NaN:非數字類型,兩大特色:ip
isNaN()函數用於檢查其參數是不是非數字內存
2.String字符串
字符串是存儲字符的變量,由雙引號(「」)或者單引號(‘’)表示io
字符串有length屬性,能夠取得字符串的長度
字符串轉換:轉型函數String(),適用於任何數據類型(null,undefined轉換後爲null和undefined)
toString方法(null,undefined不適用)
3.Boolean
只有兩個值,true和false
4.Undefined
只有一個值,即undefined值,使用var聲明瞭變量,但未給變量初始化值,那麼這個變量的值就是undefined
5Null
只有一個值的數據類型,null值表示一個空對象的指針,使用typeof操做符檢測null值會返回‘object’
6常見的引用類型
Object:帶有屬性和方法的特殊數據類型
Array:使用單獨的變量名來存儲一系列的值
7.基本類型和引用類型的區別
基本類型的變量是存放在棧區的(棧區是指內存裏的棧內存)
引用類型的值是同時保存在棧內存和堆內存中的對象;
基本類型的比較是值的比較
引用類型的比較是引用的比較
1.Null和Undefined的區別
Null和Undefined基本同義,只有一些細微差別,Null表示「沒有對象」,即該處不該該有值
Undefined表示缺乏值,此處應該有值,可是尚未定義:
2.什麼是棧內存,堆內存,二者的區別
棧內存:由程序自動向操做系統申請分配以及回收,速度快,使用方便,但程序員沒法控制,若分配失敗,則提示棧溢出錯誤,注意:const局部變量也存儲在棧區內,棧區向地址減少的方向增加
堆內存:程序員向os申請一塊內存,當系統收到程序的申請時,會遍歷一個記錄空閒內存地址的鏈表,尋找第一個空間大於所申請空間的堆結點,而後將該結點從空閒結點鏈表中刪除,並將該結點的空間分配給程序,分配的速度較慢,地址不連續,容易碎片化,故由程序員申請,同時必需要程序員銷燬