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----文件操作
Jan 18 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
vue 项目如何引入微信sdk接口的方法
Dec 18 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
js使用formData实现批量上传
Mar 27 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 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/04/10 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
python爬取网站数据保存使用的方法
2013/11/20 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
python实现感知器算法详解
2017/12/19 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
Python restful框架接口开发实现
2020/04/13 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
十八届三中全会宣传方案
2014/02/21 职场文书
班组长竞聘书
2014/03/31 职场文书
大学生标准自荐书
2014/06/15 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
小学安全工作总结2015
2015/05/18 职场文书
高中班长竞选稿
2015/11/20 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python