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 相关文章推荐
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
jquery xMarquee实现文字水平无缝滚动效果
Apr 29 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
angular.foreach 循环方法使用指南
Jan 06 Javascript
jQuery Ajax调用WCF服务详细教程
Mar 31 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
Vue系列:通过vue-router如何传递参数示例
Jan 16 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
Aug 31 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
js构造函数创建对象是否加new问题
Jan 22 Javascript
Javascript的this详解
Mar 23 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 正则匹配函数体
2009/08/25 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
firefox下input type="file"的size是多大
2011/10/24 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python基础教程项目二之画幅好画
2018/04/02 Python
详解python中的json和字典dict
2018/06/22 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
解决margin 外边距合并问题
2019/07/03 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
Android interview questions
2016/12/25 面试题
我们的节日端午节活动方案
2014/03/02 职场文书
师德师风承诺书
2014/05/23 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
学校师德师风整改方案
2014/10/28 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python