ECMAJavascript有五种基本(原生)数据类型,两种复杂(特殊)数据类型;
五种基本数据类型分别是:Number、String、Undefined、Boolean、Null;
两种复杂数据类型:Object、Symbol
一、Number类型
JS没有将数字类型细分,统称为Number类型,包含Float(浮点型)和Int(整型),数字类型的操作就如同我们生活中对数的运算一样,也有加(+)减(-)乘( * )除( / ),但是正无穷这个概念我们以前就遇见过,js中也有,下面就一起来看看JS的这几个特殊类型。
(1)、Infinity
Infinity有正负之分,Infinity代表的是数学概念中的正无穷大,+Infinity是一个比任何数字都大的特殊值,-Infinity是比任何一个数字都小的特殊值,一般都只说Infinity,不说正负,但是需要注意的是,在数学中我们说正无穷+1与正无穷基本没有区别,但是在计算机中Infinity+1始终大于Infinity;
使用方法:a、可以通过除以 0 来得到它 。
b、也可以直接在程序中使用它。
(2)NAN)(理解为“非数”)
NAN代表的是计算错误,意思就是无法进行数值运算,需要注意的是如果在数学表达式计算中有一步出现NAN,那么最终的结果一定就是NAN;
NAN的出现,让JS变得安全了很多,在其它语言中,任何数值除以非数值都会导致错误,从而停止代码的继续执行,但是在JS中,任何数值除以非数值会返回NAN,但是不影响后续代码的执行。
说明:由于number类型代表的数只能在2的正53次幂与2的负53次幂之间,但是有时我们会用到超过其代表数的情况,虽然次数不多,因此在最新的ECMAJavascript版本中,增加了BigInt,用来代表任意长度的整数,书写方法与数值类型有一点区别,它是通过将 n附加到整数字段的末尾来创建 BigInt。
二、String(字符串)类型
在js中,字符串必须被包含在引号里面,有三种包含字符串的方式,分别是单引号、双引号和反引号(tab键上面,1左边的键),单引号和双引号都是一种简单的引用,不像PHP的双引号可以解析变量,但是js的反引号可以解析表达式和变量,并且计算结果也会成为字符串的一部分,写法为:${表达式}
说明:(1)、解析表达式的写法仅在反引号内有效,其他引号不允许这种嵌入;
(2)、单引号形式的字符串,必须以单引号结尾,双引号形式的字符串必须是双引号结尾,不能相互嵌套。
三、Undefined
undefined的含义是未被赋值,如果我们定义了一个变量,但没有给变量赋值即变量未初始化,那么变量的值就是 undefined;
说明:包含undefined值得变量和没有定义的变量是有区别的,后面讲typeof()操作符时会讲到。
四、NULL
NULL和undefined一样属于一个单独的数据类型,NULL表示没有、空的;
注:在JS中,变量一旦被定义,就无法销毁,始终存在于内存中,如果我们定义了一个变量,以前赋予的值现在不用了,但是声明的变量可能在以后某天会用到,可以为它赋值为NULL;
五、Boolean (布尔)类型(逻辑类型)
注意:(1)、Boolean的值区分大小写,只有全部小写的true和 false才是布尔值,其它的例如大写或者大小写混合只是标识符。
(2)、布尔值通常用于储存表示yes或者no的值。
(3)、也可以作为比较的结果值;
六、object 类型和 symbol 类型
ECMAJavascript的对象其实就是一组数据和功能的集合,有个概念就行。
七、Typeof()操作符
我们在声明变量时,并没有像JAVA等语言一样指定数据类型,这是因为js是一种弱类型语言(松散类型),由值决定类型,例如:let age = 23;这里的变量age是Number类型,因此需要用一种手段来检测给定变量的数据类型:typeof就是负责这方面信息的操作符。它支持两种语法形式:
1.作为运算符:typeof (空格) x。
2.函数形式:typeof(x)。
以下是一些常见的typeof值:
console.log(typeof '1213') //string
console.log(typeof 100) //number
console.log(typeof true) //boolean
console.log(typeof undefined) //undefined
console.log(typeof null) //object
说明:(1)、typeof null 的结果是 "object"。这是一个错误,并且js官方也承认这是js的一个错误,现在只是为了旧版本的兼容性而保留了下来。从以上的学习中我们可以看出,null并不是一个 object类型。null有自己的类型,而且是基本数据类型之一,是一个特殊值。
(2)、所有调用typeof()的结果都会以字符串的形式返回数据类型,换句话说:所有typeof()返回的数据都是字符串。
总结
JavaScript 中有七种数据类型(前五种为基本数据类型,也称为原始类型,而
object为复杂数据类型)。
1、number (数字类型): 用于任何类型的数字:整数或浮点数。
2、string(字符串) :一个字符串可以包含一个或多个字符。
3、boolean(布尔):仅包含小写的true和 false。
4、null:空值 —— 只有一个 null。
5、undefined:用于未定义的值
6、symbol: 用于唯一的标识符。
7、object:用于更复杂的数据结构。
8、typeof:查看数据类型。
运算符查看存储在变量中的数据类型。
两种形式:typeof x或者 typeof(x)。
注意:(1)、所有typeof()返回的数据都是字符串。
(2)、typeof null会返回 "object"是 JavaScript 编程语言的一个错误。一定要记住这是错误的。