JavaScript中的值类型详细介绍


Posted in Javascript onDecember 29, 2014

计算机程序的实质很大程度上可以说是机器对各种信息(值)的操作与读写。在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存在过一些有趣的争论:http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null;最终结论为:修复该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。
Javascript 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
Jul 30 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
JavaScript中的Primitive对象封装介绍
Dec 31 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
weex里Vuex state使用storage持久化详解
Sep 09 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
JavaScript不使用prototype和new实现继承机制
Dec 29 #Javascript
JavaScript中的console.assert()函数介绍
Dec 29 #Javascript
jQuery中:eq()选择器用法实例
Dec 29 #Javascript
根据配置文件加载js依赖模块
Dec 29 #Javascript
JavaScript中的console.dir()函数介绍
Dec 29 #Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 #Javascript
小米公司JavaScript面试题
Dec 29 #Javascript
You might like
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php生成与读取excel文件
2016/10/14 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Django import export实现数据库导入导出方式
2020/04/03 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
公务员的自我鉴定
2013/10/26 职场文书
机械专业求职信范文
2014/07/15 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
涨价通知
2015/04/23 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android