Js數(shù)據(jù)類型總結(jié)

2:30 pm-

動態(tài)類型
js是一種弱類型or動態(tài)語言-----不用提前聲明變量可直接賦值;一個變量可保存不同類型的數(shù)據(jù)


數(shù)據(jù)類型

  1. 原始類型(基本數(shù)據(jù)類型)
  • Null
  • Undefined
  • Boolean
  • Number
  • String
  • Symbol

可通過構(gòu)造函數(shù)實現(xiàn)將字符串轉(zhuǎn)換成對象--------字符串的包裝類型

  • String、Number、Boolean

通過字面量的方式創(chuàng)建:var a = 'string';,這時它就是基本類型值;通過構(gòu)造函數(shù)的方式創(chuàng)建:var a = new String('string');這時它是對象類型。
基本類型是沒有屬性和方法的,但仍然可以使用對象才有的屬性方法。這時因為在對基本類型使用屬性方法的時候,后臺會隱式的創(chuàng)建這個基本類型的對象,之后再銷毀這個對象。

  1. 對象類型(引用數(shù)據(jù)類型)
  • 數(shù)組
  • 函數(shù)

堆和棧

  • 堆和棧是內(nèi)存中劃分出來用來存儲的區(qū)域。

  • 棧(stack): 為自動分配的內(nèi)存空間,它由系統(tǒng)自動釋放。

  • 堆(heap): 動態(tài)分配的內(nèi)存,大小不定,也不會自動釋放。

  • 基本類型的比較是值的比較

  • 引用類型的比較是引用的比較

  1. 內(nèi)存分配不同。
    原始值存儲在棧中,它們的值直接存儲在變量訪問的位置,而引用值存在堆中,存儲在變量處的值是一個指針(point),指向存儲對象的內(nèi)存處.
  2. 訪問機制不同
    js 中不允許直接訪問存在堆內(nèi)存中的對象,當我們訪問一個對象的時候,首先得到這個對象存在堆中的地址,然后通過這個地址去獲取對象中的值,即按引用訪問,而原始類型的值可用直接訪問。
  3. 復制機制不同
    將一個保存著原始值的變量賦值給另一個變量時,會將原始值的副本賦值給新變量,產(chǎn)生一個新的變量,兩個變量完全獨立,只是他們擁有相同的值。而引用值進行變量賦值是,會將該內(nèi)存地址賦值給新變量,這兩個變量的指針都指向了堆內(nèi)存中的同一個對象,他們兩個并不是相互獨立的,他們中任何一個發(fā)生改變都會反映到另外一個身上。

  • Boolean:true 和 false
  • Null:null
  • Undefined:默認值undefined
  • Number:根據(jù) ECMAScript 標準,JavaScript 中只有一種數(shù)字類型:基于 IEEE 754 標準的雙精度 64 位二進制格式的值(-(263 -1) 到 263 -1)。
    它并沒有為整數(shù)給出一種特定的類型除了能夠表示浮點數(shù)外,還有一些帶符號的值:+Infinity,-Infinity 和 NaN (非數(shù)值,Not-a-Number)。
    • 一些位于算符:&(與)、|(或)、^(異或)、~(非)、<<(左移)>>(符號右移) >>>(無符號右移)
  • String
    在字符串中的每個元素占據(jù)了字符串的位置。第一個元素的索引為0,下一個是索引1,依此類推。字符串的長度是它的元素的數(shù)量。
    用""或‘’表示
  • 獲取一個字符串的子串可通過選擇個別字母或者使用 String.substr().
  • 兩個字符串的連接使用連接操作符 (+) 或者 String.concat().

優(yōu)點

  • 容易連接構(gòu)造復雜的字串符

  • 字符串容易被調(diào)試(你看到的往往在字符串里)

  • 字符串通常是許多APIs的常見標準 (input fields, local storage values, XMLHttpRequest當使用responseText等的時候回應) 而且他只能與字符串一同使用。

  • Symbol:ECMAScript 第6版新定義的。符號類型是唯一的并且是不可修改的, 并且也可以用來作為Object的key的值

  • Symbol()函數(shù)會返回symbol類型的值,該類型具有靜態(tài)屬性和靜態(tài)方法。它的靜態(tài)屬性會暴露幾個內(nèi)建的成員對象;它的靜態(tài)方法會暴露全局的symbol注冊,且類似于內(nèi)建對象類,但作為構(gòu)造函數(shù)來說它并不完整,因為它不支持語法:"new Symbol()"。

  • 每個從Symbol()返回的symbol值都是唯一的。一個symbol值能作為對象屬性的標識符;這是該數(shù)據(jù)類型僅有的目的。


對象

對象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容