javascript
惊呼!JavaScript基本数据类型和引用数据类型详解
前言
我是歌謠 知其然知其所以然 人人都有一個大廠夢 希望通過自己的一個總結分享可以給予大家帶來幫助和提升。
本期知識點
JavaScript中基本數據類型和引用數據類型
目標
定義
ECMAScript包括兩個不同類型的值:基本數據類型和引用數據類型。
基本數據類型指的是簡單的數據段,引用數據類型指的是有多個值構成的對象。
當我們把變量賦值給一個變量時,解析器首先要確認的就是這個值是基本類型值還是引用類型值。
常見的數據類型
基本數據類型
- Sting
- Number
- Boolean
- null
- undefined
- Symbol
引用數據類型
- Object
- Date
- function
- RegExp
- Array …
棧內存(stack)
棧內存:是一種特殊的線性表,它具有后進先出的特性,存放基本類型。
堆內存(heap)
區別
1復制變量時的不同
對于基本類型來說,一般會在變量對象上創建一個新值,然后把這個值復制到為新變量分配的類型上面
對于引用類型來說,也會將存儲在變量對象的值復制一份到新變量的內存空間中,但是這個值的副本其實是一個指針,這個指針指向我們被賦值的對象,即不管怎么樣,引用類型的賦值其實都是引用的同一個對象
2參數傳遞的不同
首先我們應該明確一點:ECMAScript中所有函數的參數都是按值來傳遞的。
原始值:只是把變量里的值傳遞給參數,之后參數和這個變量互不影響。
引用值:對象變量它里面的值是這個對象在堆內存中的內存地址,因此它傳遞的值也就是這個內存地址,這也就是為什么函數內部對這個參數的修改會體現在外部的原因了,因為它們都指向同一個對象。
3聲明變量時不同的內存分配:
原始值:存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變量訪問的位置。
引用值:存儲在堆(heap)中的對象,也就是說,存儲在變量處的值是一個指針(point),指向存儲對象的內存地址。
檢測方法
可以通過typeof檢測基本類型和復雜類型,不過檢測出來的復雜類型都是Object,如果想要檢測復雜類型可以通過 instanceof
語法:object instanceof constructor
總結
面試中經常會問我們基本數據類型有哪些
我是歌謠 放棄很容易 堅持一定很酷 純屬個人總結 若有不合理之處 可選擇性關閉網頁 歡迎討論
下一期預計開始講解原型和原型鏈部分 敬請期待
總結
以上是生活随笔為你收集整理的惊呼!JavaScript基本数据类型和引用数据类型详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] 说说你对H5的Servi
- 下一篇: gradle idea java ssm