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 GridView 实现自动计算操作代码
Mar 25 Javascript
javascript 一个函数对同一元素的多个事件响应
Jul 25 Javascript
JS 控制非法字符的输入代码
Dec 04 Javascript
jquery属性过滤选择器使用示例
Jun 18 Javascript
JS获取时间的方法
Jan 21 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
JavaScript实战之带收放动画效果的导航菜单
Aug 16 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
vue导出html、word和pdf的实现代码
Jul 31 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
May 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
js中less常用的方法小结
2017/08/09 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python pandas库的安装和创建
2019/01/10 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
教师业务培训方案
2014/05/01 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
高三化学教学反思
2016/02/22 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python