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文件 document.createElement
Oct 14 Javascript
jquery 插件 任意位置浮动固定层
Dec 25 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
Jun 19 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
微信小程序实现签到功能
Oct 31 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
python连接mongodb集群方法详解
2020/02/13 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
违反课堂纪律检讨书
2014/01/19 职场文书
企业党员公开承诺书
2014/03/26 职场文书
python基础详解之if循环语句
2021/04/24 Python
python爬取豆瓣电影TOP250数据
2021/05/23 Python
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS