## 原始值和引用值
在 ECMAScript 中,變量可以存在兩種類型的值,即原始值和引用值。
原始值
存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變量訪問的位置。
引用值
存儲在堆(heap)中的對象,也就是說,存儲在變量處的值是一個指針(point),指向存儲對象的內存處。
為變量賦值時,ECMAScript 的解釋程序必須判斷該值是原始類型,還是引用類型。要實現這一點,解釋程序則需嘗試判斷*該值是否為 ECMAScript 的原始類型之一*,即 Undefined、Null、Boolean、Number 和 String 型。由于這些原始類型占據的空間是固定的,所以可將他們存儲在較小的內存區域 - 棧中。這樣存儲便于迅速查尋變量的值。
**在許多語言中,字符串都被看作引用類型,而非原始類型,因為字符串的長度是可變的。ECMAScript 打破了這一傳統。**
如果一個值是引用類型的,那么它的存儲空間將從堆中分配。由于引用值的大小會改變,所以不能把它放在棧中,否則會降低變量查尋的速度。相反,放在變量的棧空間中的值是該對象存儲在堆中的地址。地址的大小是固定的,所以把它存儲在棧中對變量性能無任何負面影響。如下圖所示:

## 原始類型
如前所述,ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。ECMA-262 把術語*類型(type)*定義為值的一個集合,每種原始類型定義了它包含的值的范圍及其字面量表示形式。
ECMAScript 提供了 typeof 運算符來判斷一個值是否在某種類型的范圍內。可以用這種運算符判斷一個值是否表示一種原始類型:如果它是原始類型,還可以判斷它表示哪種原始類型。
在稍后的章節,我們將為您深入講解 ECMAScript 的原始類型和引用類型。
- 序言
- 從業感悟
- 常用名詞
- HTML
- JS
- ES6新特性
- jquery和vue對比
- 徹底理解this
- JQuery添加自定義函數
- js的實現
- 原始值和引用值
- MYSQL
- 簡介
- 術語
- 特點
- 范式
- 數據類型1
- 數據類型2
- 編碼
- 權限管理
- 事務
- mvvc
- 引擎
- MyISAM與InnoDB區別
- 索引類型
- 鎖
- 死鎖
- 分層架構
- 執行計劃
- join原理
- 高可用
- 日志類型
- 分庫分表
- 中間件
- 服務器
- 操作系統
- 信號量 鎖 隊列
- PHP
- composer加載原理
- composer基礎知識
- 自動加載函數
- composer加載代碼
- composer 自動加載
- 內存管理
- PHP執行流程
- cgi,fastCgi,php-fpm
- HTTP
- 錯誤碼
- 跨域請求
- 面試
- 安全
- HTTP劫持
- 設計模式
- 如何正確的使用設計模式
- 單例模式
- 原型模式
- 簡單工廠模式
- 工廠方法模式
- 抽象工廠模式
- 建造者模式
- 設計原則
- 算法
- PHP短標簽