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 相关文章推荐
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
jQuery 事件队列调整方法
Sep 18 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
纯jQuery实现前端分页功能
Mar 23 jQuery
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
js脚本中执行java后台代码方法解析
Oct 11 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类
2006/11/25 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
python web框架 django wsgi原理解析
2019/08/20 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python制作微博图片爬取工具
2021/01/16 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
一个C/C++编程面试题
2013/11/10 面试题
连带责任保证书
2014/04/29 职场文书
小学校本培训方案
2014/06/06 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
发展党员工作情况汇报
2014/10/28 职场文书