四.js数据类型

115 阅读4分钟

基本数据类型

1)Undefined

只有一个值就是undefined;表示未定义或者使用 var 声明变量但没有为其赋值或者对象取不存在的属性值

2)Number

整数数值和浮点数值(浮点数值的运算有精度误差,js不能用于做科研计算)

image.png

image.png

赋值运算符 = 执行顺序是从右到左

3)Boolean

只有两个值是true和false,true和false都属于关键字代表布尔值。

布尔值:可用于业务中程序代码做逻辑判断。布尔表达式:比如100>18,表达式的结果是布尔值。

任何数据类型的值都有与布尔值等价的值

image.png

4)Null

只有一个值就是null,表示空值。

null和undefined的区别:null意义表示变量是有数据的就是空值,只不过没有写业务数据;undefined意义为了程序的安全而设定,声明了变量但没有赋值是没有数据的。

5)String

字符串,用双引号""或单引号、反引号引起的内容就是字符串,没有双引号""或单引号、反引号引起的就是一个变量的标识符

ps:1)引号不属于字符串的字符是一种标记用于和变量名区分,则控制台打印时不会显示引号;

2)当字符串外面用双引号引起的内容中有单引号则单引号就是字符串中的字符,反之外面用单引号引起的内容中需要用双引号,否则无法解析代码。

image.png

image.png

字符串拼接

用+可将字符串拼接在一起,加号是拼接符号。

ps:1)拼接的几个变量中,有任意一个变量是字符串则会把另外的不是字符串的数据转换为字符串后拼接;

2)而对于字符串的数字数据除了+是拼接,其他运算符会将字符串数字数据转换为数字再做运算。

image.png

image.png

引用数据

引用数据包含Object对象、Function函数、Array数组、Date时间等。

引用数据实质上是一个内存空间,存储数据时是在内存中开辟了一个空间在空间中保存数据,它也是一个数据容器可以存储很多任何类型的数据。

引用数据与基本数据的不同

基本数据指的是简单的数据只能单独存储一个值,引用数据指的是有多个值构成的对象可存储多个同类型的值。基本数据存储在栈内存,引用数据存储在堆内存。

image.png

1)基本数据类型是按值访问,可以直接操作保存在变量中的实际值。 在将一个保存基本数据的变量赋值给另一个变量时,先取出变量中保存的基本数据再赋值给新变量。相当于将变量的副本复制给新变量,但此后这两个变量是完全独立的,操作一个变量改变后并不会影响另一个变量。这种复制属于深拷贝。

image.png

image.png

其赋值的过程:

image.png

2)引用数据类型是按引用访问,不允许直接访问保存在内存中的对象和操作内存空间,所以在访问一个对象时,首先得到的是这个对象在内存中的地址,然后再按照这个地址去获得这个对象中的值。

在将一个保存着对象内存地址的变量赋值给另一个变量时,先取出对象在内存空间的引用地址再把这个内存地址赋值给新变量。也就是说这两个变量都指向了内存中的同一个对象,两个变量中任何一个作出的改变都会影响到另一个变量。这种复制是浅拷贝。

ps:这里需要理解的一点是赋值对象时并不会在内存中新生成一个一模一样的对象,只是多了一个保存指向这个对象指针的变量。

image.png

image.png 其赋值过程:

138FC080650AE128B4CFF52F3E40BBEA.png

而改变保存对象的变量的引用地址,则会在内存中新生成一个对象

image.png

image.png 其赋值过程:

4723ACB96DAF0E2D0B5E53054B70B2E9.png