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 CSS修改学习第一章 查找位置
Feb 19 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
Jun 26 Javascript
跟我学习javascript的prototype使用注意事项
Nov 17 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
vue.js学习笔记之v-bind和v-on解析
May 03 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
小程序使用分包的示例代码
Mar 23 Javascript
vue离开当前页面触发的函数代码
Sep 01 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
jQuery 源码分析笔记
2011/05/25 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
php生成短网址示例
2014/05/05 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
python中zip和unzip数据的方法
2015/05/27 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python使用sorted排序的方法小结
2017/07/28 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
python制作简单五子棋游戏
2019/06/18 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
Android面试题附答案
2014/12/08 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
校园达人秀策划书
2014/01/12 职场文书
初三物理教学反思
2014/01/21 职场文书
广告业务员岗位职责
2014/02/06 职场文书
科技活动周标语
2014/10/08 职场文书
关于分班的感言
2015/08/04 职场文书
Python经常使用的一些内置函数
2022/04/11 Python