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 相关文章推荐
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
jquery操作select详解(取值,设置选中)
Feb 07 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
canvas绘制多边形
Feb 24 Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 Javascript
vuejs实现折叠面板展开收缩动画效果
Sep 06 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
js面向对象方式实现拖拽效果
Mar 03 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/05/21 PHP
php split汉字
2009/06/05 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP中的self关键字详解
2019/06/23 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
HTTP 304错误的详细讲解
2013/11/13 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
token 机制和实现方式
2020/12/15 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
优秀乡村医生事迹材料
2014/05/28 职场文书
岗位说明书标准范本
2014/07/30 职场文书
家长学校培训材料
2014/08/20 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
滴水洞导游词
2015/02/10 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
就业证明函
2015/06/17 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫