基础数据类型与变量对象
最新的ECMAScript标准定义了7种数据类型。其中包括6种基础数据类型与一种引用数据类型(Object)。
其中基础数据类型详情如下表:
类型 | 值 |
---|---|
Boolean | 只有两个值:true 与 false |
Null | 只有一个值:null |
Undefined | 只有一个值:undefined |
Number | 所有的数字 |
String | 所有的字符串 |
Symbol | 符号类型 var sym = Symbol('testsymbol') |
由于目前常用的浏览器版本还不支持Symbol,而且通过babel编译之后的代码量过大,因此在实践中个人建议暂时不要使用Symbol。
.
我们来探讨一个问题。有一个很简单的例子如下。
function fn() {
var a1 = 10;
var a2 = 'hello';
var a3 = null;
}
现在我们需要思考的是,当我们运行函数fn时,它其中的变量a1, a2, a3都保存在什么地方了?
函数在运行时,会创建一个执行环境,我们管这个执行环境叫做执行上下文(Execution Context,我们会在后续的章节详细学习它)。在执行上下文中,会创建一个叫做变量对象(VO,后续章节详细学习)的特殊对象。基础数据类型往往都会保存在变量对象中。
变量对象也存在于堆内存中。但是由于变量对象的特殊职能,我们在理解时,建议仍然将其与堆内存空间区分开来。