基本数据类型和引用数据类型的区别:基本数据类型操作的是值,而引用数据类型操作的是对存储空间的引用地址
基本数据类型:是把值直接给变量,接下来的操作过程中,直接拿值操作,可能两个变量存储的值一样,但是之间没有关系,其中一个改变,另一个没有影响
引用数据类型:
1.定义一个变量
2.开辟一个新的空间,然后把属性名和属性值保存在这个空间,并且有一个空间引用地址
3.接下来把这个地址又告诉了另外一个变量,所以另外一个变量存储的也是这个地址,此时两个变量操作的是同一个空间
4.其中一个改变了空间的内容,另一个也会跟着改变
JS中检测数据类型的方式
- typeof 运算符
- instanceof运算符
- constructor
- Object.prototype.toString.call()
typeof:局限性,不能具体检查object下细分的类型,都返回object
typeof "world" //"string"
typeof 1 //"number"
typeof true //"boolean"
typeof undefined //"undefined"
typeof null //"object"
typeof {} //"object"
typeof [] //"object"
typeof /^$/ //"object"
typeof function(){} //"function"
面试题:
console.log(typeof (typeof(typeof(typeof([]))))
//① typeof [] ==> "object"
//② typeof "object" ⇒ "string"
//③ typeof "string" => "string"
//④ typeof "string" => "string"
出现两个和两个以上typeof的时候,最终结果都是"string"