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随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jquery获取tagName再进行判断
May 29 Javascript
有关Promises异步问题详解
Nov 13 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
javascript 判断一个对象为数组的方法
May 03 Javascript
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
node使用promise替代回调函数
May 07 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 Javascript
VUE中V-IF条件判断改变元素的样式操作
Aug 09 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
长波知识介绍
2021/03/01 无线电
php 使用 __call实现重载功能示例
2019/11/18 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
js倒计时抢购实例
2015/12/20 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python绘图实现显示中文
2019/12/04 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
《木笛》教学反思
2014/03/01 职场文书
供用电专业求职信
2014/07/07 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
现实表现证明材料
2015/06/19 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android