这篇文章主要介绍了 JavaScript 中的值类型详细介绍, 本文讲解了 Primitive、Object、JS 自带全局对象、Immutable 与 Mutable 等内容, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
计算机程序的实质很大程度上可以说是机器对各种信息(值)的操作与读写。在 JavaScript 中,存在多种类型的值,这些值分成两大类:Primitive(基本类型)和 Object(对象)。
Primitive
JavaScript 中 Primitive 有 5 种类型:
1.Number。所有的数字,无论是整数还是小数,均为 Number 类型。
2.String。字符串类型。
3.Boolean。布尔类型,true 或者 false。
4.null。此类型只有 null 一个值。
5.undefined。此类型只有 undefined 一个值。
Object
除了 Primitive,JavaScript 中其它任何值均为 Object(对象)。Object 有以下几种:
1.JSON 键值对对象。如 {"name":"Bob", "age":42}。
2. 数组 (array)。如 [1,4,5,7,9]。
3. 函数 (function)。如 function(){return true;}。在 JavaScript 中函数有两种存在形式:1. 可执行代码块;2. 类(Class) 的构造器 (constructor)。无论是以哪种形式存在,函数(function) 始终都是对象。
JS 自带全局对象
为了方便程序编写,JavaScript 自带一个全局对象,该全局对象拥有以下 7 个成员变量,其类型均为 Object:
1.Math。可以通过调用 Math 对象的方法来完成一系列复杂的数学运算。
2.Number。可以通过访问 Number 对象的成员变量来获取一些特殊值。
3.Array。数组对象的构造函数。
4.Function。函数对象的构造函数。
5.Date。日期对象的构造函数。
6.RegExp。正则表达式对象的构造函数。
7.Error。错误对象的构造函数。
在进行程序编写时,由于可以直接访问上述 7 个变量,因此也可以将它们当作全局对象来使用。
Immutable 与 Mutable
Primitive 与 Object 有一个泾渭分明的特性:所有的 Primitive 都是 Immutable 的,所有的 Object 都是 Mutable 的。以 String 类型为例,调用 String 的方法对其进行编辑后,JavaScript 会将编辑后的结果保存在一个新的 String 对象中,原 String 对象不会有任何改变:
- var s = "test";
- s.toUpperCase();//return a new String object "TEST"
- console.log(s);//"test" -- original String s does not change
实验
在 JavaScript 中,可以通过使用 typeof 关键词来获取某个值的类型。
获取数字的类型:
- var n = 42;
- console.log(typeof n);
程序输出结果为 number。
获取字符串的类型:
- var s = "test";
- console.log(typeof s);
程序输出结果为 string。
获取布尔值的类型:
- var b = true;
- console.log(typeof b);
程序输出结果为 boolean。
获取 null 的类型:
- var x = null;
- console.log(typeof x);
程序本应输出 null,但实际上却输出 object。原因在于,当对 null 值使用 typeof 操作时,程序将返回 object:这是自 JavaScript 第一个版本以来就存在的一个 bug。在 ECMAScript 标准的制定过程中,就是否修复这个 bug 存在过一些有趣的争论:;最终结论为:修复该 bug 会给太多的网站带来问题,因此暂不修复。
获取 undefined 的类型:
- var y = undefined;
- console.log(typeof y);
程序输出结果为 undefined。
获取 JSON 对象的类型:
- var j = {
- "name": "Bob",
- "age": 42
- };
- console.log(typeof j);
程序输出结果为 object。
获取数组对象的类型:
- var a = [2,3,5,7,11];
- console.log(typeof a);
程序输出结果为 object。
获取函数对象的类型:
- var f = function() {
- return true;
- };
- console.log(typeof f);
函数对象比较特殊,typeof 操作符返回结果为 function。
来源: