JavaScript数据类型分为两大类:
简单数据类型和复杂数据类型
简单数据类型
- undefined
- null
- number
- string
- boolean
- symbol (es6出的)
这些都属于值类型(简单数据类型)
复杂数据类型
- object
- array
- function
这些都属于引用类型(复杂数据类型)
值类型和引用类型的区别?
- 他们的存储位置不同:值类型存储在
栈
中 ,引用类型存在堆
中- 复制方式不一样:值类型的是
深复制
,引用类型的是浅复制
,变量的复制其实是引用的传递- 值类型不可添加属性和方法,而引用类型可以添加属性和方法。
- 值类型比较只要相等,就可以用 == 或者 === 来比较,但是引用类型,即使let s = {};let s1 = {};但他们的
内存地址不一样
,比较依然不相等。
关于栈和堆可以阅读这篇文章:点击这里跳转