×

ECMAScript 基础

ECMAScript 语法ECMAScript 变量ECMAScript 关键字ECMAScript 保留字ECMAScript 原始值和引用值ECMAScript 原始类型ECMAScript 引用类型

ECMAScript 运算符

ECMAScript 位运算符ECMAScript Boolean 运算符ECMAScript 乘性运算符ECMAScript 加性运算符ECMAScript 关系运算符ECMAScript 等性运算符ECMAScript 条件运算符ECMAScript 赋值运算符ECMAScript 逗号运算符

ECMAScript 语句

ECMAScript if 语句ECMAScript 迭代语句ECMAScript 标签语句ECMAScript break & continueECMAScript with 语句ECMAScript switch 语句

ECMAScript 函数

ECMAScript 函数概述ECMAScript arguments 对象ECMAScript Function 对象ECMAScript 闭包(closure)

ECMAScript 对象

ECMAScript 面向对象技术ECMAScript 对象应用ECMAScript 对象类型ECMAScript 对象作用域ECMAScript 定义类或对象ECMAScript 修改对象

ECMAScript 继承

ECMAScript 继承机制实例ECMAScript 继承机制实现

ECMAScript 6 入门

ECMAScript 6 简介ECMAScript 6 let和const命令ECMAScript 6 变量的解构赋值ECMAScript 6 字符串的扩展ECMAScript 6 正则的扩展ECMAScript 6 数值的扩展ECMAScript 6 数组的扩展ECMAScript 6 函数的扩展ECMAScript 6 对象的扩展ECMAScript 6 SymbolECMAScript 6 Proxy和ReflectECMAScript 6 二进制数组ECMAScript 6 Set 和 MapECMAScript 6 Iterator和for...of循环ECMAScript 6 Generator 函数ECMAScript 6 Promise对象ECMAScript 6 异步操作和Async函数ECMAScript 6 ClassECMAScript 6 修饰器(Decorator)ECMAScript 6 ModuleECMAScript 6 编程风格读懂 ECMAScript 规格ECMAScript 6 参考链接

ECMAScript 原始值和引用值


在ECMAScript中,变量可以存在两种类型的值,即原始值和引用值。本节将介绍这两种类型的值。

原始值和引用值

在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的原始类型和引用类型。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)