Javascript之基本類型和引用類型

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

  1. 涉及到的任何關於NaN的操做都會返回NaN
  2. NaN不等於本身

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表示缺乏值,此處應該有值,可是尚未定義:

  • 變量被聲明瞭,但沒有賦值時,就等於Undefined
  • 調用函數時,應提供的參數沒有提供,該參數爲Undefined
  • 對象沒有賦值的屬性,該屬性爲undefined
  • 函數沒有返回值時,默認返回undefined

2.什麼是棧內存,堆內存,二者的區別

棧內存:由程序自動向操做系統申請分配以及回收,速度快,使用方便,但程序員沒法控制,若分配失敗,則提示棧溢出錯誤,注意:const局部變量也存儲在棧區內,棧區向地址減少的方向增加

堆內存:程序員向os申請一塊內存,當系統收到程序的申請時,會遍歷一個記錄空閒內存地址的鏈表,尋找第一個空間大於所申請空間的堆結點,而後將該結點從空閒結點鏈表中刪除,並將該結點的空間分配給程序,分配的速度較慢,地址不連續,容易碎片化,故由程序員申請,同時必需要程序員銷燬

相關文章
相關標籤/搜索