.
##数据类型
1基本数据类型【内存栈里面储存的数据】
-数字 -字符串 -布尔 -空 -未定义
2引用数据类型
-对象 -数组 -函数 -正则
##基本数据类型和引用数据类型【区别】
- 基本数据类型在赋值的时候是在栈里面开一个新的空间存储,多个变量使用同一个值也是对值得深拷贝,每个值拥有独立得存储空间。
- 引用数据类型在赋值得时候是在堆里面开一个空间,把存储空间得标识码赋给了变量,多个变量赋值为同一个对象得时候,只是简单得复用了标识码得引用,俗称浅拷贝。
##类型转换
- 字符串->数组
- 字符串->数字
- 所有得数据互相之间都可以转换
##显式转换
很直观的从代码上可以看出来是在转换数据类型。
- 使用数据的构造函数:String(),Number(),Array()
- 使用方法,比如转成字符串可以使用 toString 方法
##隐式转换
- if的表达式可以隐式转换
- +任何值和字符串加,都会被转成字符串
- 除了+,其他的减乘除都是尝试把数据转成数字进行计算。
- 逻辑运算符也会隐式转换数据
##数据类型检测
- typeof:对基本数据类型检测好用,对于引用数据类型全都是object
- instanceof:检测一个值是不是属于一个数据原型上的,对于引用数据很精准,对于基本数据类型不精准。
- constructor:可以检测基本数据和引用数据类型,但是对于空置类型,不能检测出来,因为空值类型没有构造函数
- Object.prototype.toString.call():可以检测所有的数据类型