基本类型和引用类型
基本类型也可以被称作原始类型
引用类型处理的是对象,引用可以看做指针,指向引用的内存堆栈区,所有引用类型都是Object的实例
基本类型
基本数据类型有5种:
- Number
- String
- null
- Boolean
- undefined
ES6新增Symbol类型
调用typeof()
可以查看相应的类型
typeof() 当类型为引用类型或者null 时会返回object ,因为null代表一个空对象
var str='this is a string'
var newStr=str
newStr='this is a new string'
console.log(str==newStr)//false
上述示例返回false说明 newStr 是 str 字符串的复制,实际执行过程是创建 newStr 时在堆栈区重新开辟一段空间存放与str相同的值,改变 newStr 的值时是改变 newStr 内存的值,不会影响str的值.
基本类型的比较是值的比较
其他基本数据类型也同理
引用类型
引用类型也就是对象类型,处理的是对象,object、array、function均是引用类型.一系列构造函数也是引用类型,比如Number、String、Boolean,引用类型比较时是引用地址的比较
var obj={x:1}
var newObj=obj
newObj.x=3
console.log(obj)
//{x: 3}
var arr=[1,2,3]
var newArr=arr
newArr[0]=3
console.log(arr)
//(3) [3, 2, 3]
从上述可以看出引用类型复制过后进行更改,会改变元数据的值,可以看出两者指向同一堆栈区
需要注意的是引用类型的比较是引用的比较,看下面这个例子:
console.log({}=={})
console.log({}==={})
{} 是不等于 {} 的因为两者存在于不同堆栈区,比较引用是不同的.