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 相关文章推荐
juqery 学习之四 筛选过滤
Nov 30 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
JavaScript实现文字跟随鼠标特效
Aug 06 Javascript
jQuery 3.0中存在问题及解决办法
Jul 15 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
JS实现按钮添加背景音乐示例代码
Oct 17 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
async/await地狱该如何避免详解
May 10 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执行.SQL文件
2013/07/05 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
python遍历文件夹下所有excel文件
2018/01/03 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
数据员岗位职责
2013/11/19 职场文书
现金会计岗位职责
2013/12/05 职场文书
好军嫂事迹材料
2014/01/15 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
土地转让协议书范本
2014/04/15 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
学生会任命书范本
2015/09/21 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
delete in子查询不走索引问题分析
2022/07/07 MySQL