JavaScript 数据类型

1. 在 ECMAScript 中,变量可以存储两种类型的值,即原始值和引用值。原始值存储在栈(Stack)中的简单数据段,它们的值直接存储在变量访问的位置;引用值,存储的是存储在堆中对象的引用,也就是说它是一个指针,指向存储对象的内存出。内存模型如下图所示:

[img]http://dl.iteye.com/upload/picture/pic/49941/e1c674ab-0000-3123-be16-9f8ee470e1ce.png[/img]

2. 在 ECMAScript 中有五种原始数据类型,即:Undefined、Null、Boolean、Number 和 String 型。这些原始数据类型所占的数据空间是固定的。如果一个值是引用类型,那么它指向的内存空间是在堆中分配的。[b]注意, String 类型在 ECMAScript 中属于原始数据类型,不同于 Java。[/b]

3. 可通过 typeof 运算来判断一个变量或值的类型,此运算返回下列结果之一: “undefined”、“boolean”、“number” 和 “Object”。其实返回的值是跟五种原始数据类型对应。仔细观察会发现原始数据类型有五种,而这里只返回四中结果,发现没有 Null 型对应的值。
[b]注意,如果是 null 值,那么返回的是 “object”。据说这是最初 JavaScript 设计的一个错误,后来被 ECMAScript 沿用了。现在 null 被认为是对象占位符,从而解析了改矛盾,从技术上讲,它仍是原始值。[/b]

4. Undefined 类型
Undefined 类型只有一个值 undefined。当声明一个变量未初始化时,该变量的默认值是 undefined。
[b]注意,undefined 不等于未定义的值,undefined 是声明了但未赋值,而未定义是从来就没有声明过的值,但是 typeof 不真正区分这两种值。未声明的变量只能用于 typeof 运算,其它所有运算只能是已声明的变量。已声明的 undefined 值的变量可以用于其它运算。[/b]

5. Null 类型
Null 类型也是只有一个值 null。值 undefined 是从 null 派生而来,因此 ECMAScript 把它们定义为相等,即 null == undefined 返回 true。
尽管这两个值相等,但是它们的含义不同,undefined 是声明变量但未对其初始化时赋予的值,而 null 表示尚未存在的[b]对象[/b]。

6. Boolean 类型
Boolean 类型只有两个值 true 和 false。

7. Number 类型
可以以任何的基表示一个数值,但是所有的数学运算返回的都是十进制的结果。
Number 类型还有几个特殊值。其中 Number.MAX_VALUE 和 Number.MIN_VALUE 定义了 Number 类型数值集合的边界。所有 ECMAScript 数值都在这两者之间,但是运算结果可以不落在这两者之间。
当计算的值大于 Number.MAX_VALUE 时将返回 Number.POSITIVE_INFINITY,意味着不再有数字值。一样地,当计算的值小于 Number.MIN_VALUE 时将返回 Number.NEGATIVE_INFINITY,一样意味着不再有数字值。

8. String 类型
ECMAScript 中 String 类型也属于原始类型,它是唯一没有固定大小的原始类型。
String 类型还包括几种类型字符字面量,如下图所示:

[img]http://dl.iteye.com/upload/picture/pic/49939/4e536420-b603-3470-aa80-d8ac47b8a051.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值