【JavaScript】JavaScript 中的数据类型

一:JavaScript 中的数据类型

在 JavaScript 中,数据类型可以分为两种,一种是"基本数据类型",另外一种是"引用数据类型"。基本数据类型只有一个值,而引用数据类型可以含有多个值。

1:基本数据类型

基本数据类型有 5 种,如下表格

基本数据类型
数据类型 说明
Number 数字,数学运算的值
String 字符串,表示信息流
Boolean 布尔值,逻辑运算的值
Undefined 未定义的值,表示未赋值的初始化值
Null 空值,表示非对象

下面针对这 5 种基本数据类型,我们分别简要说明一下。

①:数字(Number)

在 JavaScript 中,数字是最基本的数据类型,所谓的数字,就是我们数学上的数字,比如 6,-8,3.1415926 等。

例 1-1 :数字不区分整数和浮点数

如下代码所示

	var int = 1;  	  // 整型数值
	var float = 1.0;  // 浮点型数值

如果你有其它编程语言基础,比如在 C# 中,整数一般都是 32 位数值,而浮点数一般都是 64 位数值。

但在 JavaScript 中,数字是不区分"整数(int)"和"浮点数(float)"的,所有的数字都是以 64 位 浮点数形式存储,包括整数。例如 7 与 7.0 是同一个数。

例 1-2 :浮点数的溢出

如下代码所示

	var a = 0.1 + 0.2;
	document.write("a = " + a);

这段代码执行后,你觉得结果会是多少呢 ?是 0.3 吗 ?让我们来看一下浏览器的运行效果
在这里插入图片描述
可以看到,输出的结果是 0.3 后面有很多个 0 ,而不是 0.3 ,这就是浮点数的溢出。

而造成这种情况的原因是 JavaScript 遵循二进制浮点数算术标准(IEEE 754)而导致的问题,该标准适合很多应用,但它却违背了数字的基本常识。

怎么解决这个问题呢 ?

浮点数中的整数运算是准确的,所以小数表现出来的问题可以通过指定精度来避免,比如上面的加法运算,我们可以这样来写

	var a = (1+2)/10;

浏览器运行结果如下
在这里插入图片描述
例 1-3 :特殊的数值

JavaScript 中定义了几个特殊的数值常量,如下表格所示

特殊数值
特殊值 说明
Infinity 无穷大。当数值超过浮点型所能够表示的范围,负无穷大为 -Infinity
NaN 非数值。不等于任何数值,包括自己
Number.MAX_VALUE 表示最大数值
Number.MIN_VALUE 表示最小数值,一个接近 0 的值
Number.POSITIVE_INFINITY 表示正无穷大的数值
Number.NEGATIVE_INFINITY 表示负无穷大的数值

这里以 NaN 为例,让我们了解一下特殊值的用法。

NaN: 就是 Not a Number 的缩写形式,表示非数字值,是在 IEEE 754 中定义的一个特殊的数值。

数学中,除数是不能为 0 的,而如果我们强制让 0 做除数,结果会是怎样的呢 ?

如下代码

	var a = b = 0;
	document.write("a/b = "+a/b);

浏览器运行效果如下
在这里插入图片描述
可见如当 0 除以 0 时会返回 NaN 这个特殊值,而且如果表达式的运算值为 NaN,就可以推断出其中至少一个运算数是 NaN 。

②:字符串(String)

JavaScript 字符串是由 0 个或多个 Unicode 字符组成的字符序列,0 个字符表示空字符串。如下代码所示

	var str = "Allen Su";  // 字符串
	var emptyStr="";	   // 空字符串

注意事项
在使用字符串时,字符串必须包含在英文的单引号或者双引号中。

如果字符串包含在双引号中。则字符串内也可以包含单引号。反之,也可以在单引号中包含双引号,如下代码

	var str1 = "我'喜欢'编程";  // 双引号包含单引号
	var str2 = '我"喜欢"编程';  // 单引号包含双引号

但双引号括起来的字符串中,不能再含有双引号,因为 JavaScript 判断不出哪两个双引号是一对的。单引号同理

字符串需要学习的有很多,这里只说明一下它的基本用法,后面我会专门写一篇关于字符串的博客。

③:布尔(Boolean)

布尔类型的值只有两个固定的值,true 和 false 。true 代表"真",false 代表"假"。

这里做一下拓展,为什么这种数据类型要叫"布尔值"呢 ?

其实,布尔是 bool 的音译,是以英国数学家、布尔代数的奠基人 乔治·布尔(George Boole) 来命名的。

例 3-1 :

如下代码

	var a = 10;
	var b = 20;
	var bool = a>b
	document.write(bool);

首先 10 > 20 在数学中是不成立的,所以 a>b 返回的结果是 ?浏览器运行效果如下
在这里插入图片描述
输出结果为 false,代表 a > b 这个是不成立的,也就是一个假事件。反之 a < b 返回的结果就是 true ,代表这是一个真事件。

④:未定义值(Undefined)

undefined 是 Undefined 类型的唯一值,它表示未定义的值,指的是当声明变量未赋值时,或者定义属性未设置值时,默认值都是 undefined ,undefined 隐藏着意外的空值。

如下代码所示

	var number;
	document.write(number);

浏览器运行效果如下
在这里插入图片描述
如果我们只是声明一个变量而不对其赋初始值,结果就是 undefined 。

⑤:空值(Null)

Null 类型只有一个值,即 null ,它表示空值,定义一个空对象指针。

比如在定义数字,字符串数据的时候,系统都会分配一定的内存空间,在 JavaScript 中,如果一个变量的值等于 null ,则表示系统没有给这个变量分配内存空间。如

	var obj = null;

obj 这个变量就没有被分配内存空间。

null 隐含着意料之中的空值,因此设置一个变量、参数为空值时,建议使用 null ,而不是 undefined 。

使用 typeof 运算符检测 null 值,返回 object ,说明它属于对象类型,但 JavaScript 单独把它归为一类特殊的值。

拓展:undefined 与 null 的区别

相同点
undefined 派生自 null ,undefined 和 null 都表示空缺的值,转化为布尔值时都是假值,可以相等,如下代码所示

	document.write(null == undefined);

浏览器运行效果如下
在这里插入图片描述
不同点
null 和 undefined 属于两种不同的类型,使用全等运算法 === 或 typeof 运算符可以进行检测,如下代码所示

	document.write(null === undefined);
	document.write("<br/>"+typeof null);
	document.write("<br/>"+typeof undefined);

注:代码中使用的 "<br/>" 仅为换行目的。

浏览器运行效果如下
在这里插入图片描述
可见 null 返回的是 object 类型,而 undefined 返回的是 undefined 。所以两者的类型是不相同的。

2:引用数据类型

引用数据类型包含:对象(Object)、数组(Array)、函数(Function),引用数据类型比较复杂,不是几句话或者一篇博客可以写完的,后续我写好博客之后会把链接复制到这里。


结束语

如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。

Web开发者俱乐部
在这里插入图片描述

发布了187 篇原创文章 · 获赞 253 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_42351033/article/details/103317324