基本概念

  • 基本类型

基本类型是变量中的实际的值,指的是简单的数据段,基本数据类型有这五种:UndefinedNullStringNumberBoolean

  • 引用类型

引用类型值指那些可能为多个值构成的对象。引用类型有这几种:objectArrayRegExpDateFunction、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)

区别

  • 引用类型值可添加属性和方法,而基本类型值则不可以

  • 在赋值语句中,基本类型是直接把值传递给另外一个变量,稍后改变该变量的值不会影响另外一个变量的值,但是引用类型是把需要赋值对象的指针指向该变量的地址,由于它们指向同一个对象,修改会互相影响

  • 传递参数时,基本类型传参内部不会改变外部传入对象的值,引用类型则会改变,因为指向同一个对象

  • 类型检测时,typeof能确定变量是字符串、数值、布尔值还是undefined,但是无法确定对象类型,instanceof才能判断某个对象类型。

  • 存放位置,基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的,基本类型的复制就是在栈内存中开辟出了一个新的存储区域用来存储新的变量,这个变量有它自己的值,只不过和前面的值一样,所以如果其中一个的值改变,则不会影响到另一个

  • 比较,基本类型的比较是值的比较,引用类型的比较是引用的比较

var a ={}
var b ={}
a===b //false