值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
var a = 10
var b = a
b = 30
var arr =[10,20]
var newarr = arr
newarr[0] = 30
consloe.log(a,arr)
print:10,[30,20]
如上所示,我们并没有修改arr为什么最后arr的值变成了[30,20],这里就是值类型和引用类型的区别
值类型的变量通过的但是深拷贝,而引用类型用的是浅拷贝.
浅拷贝&深拷贝
浅拷贝:如果数组元素是基本类型,就会拷贝一份,互不影响,而如果是对象或者数组,就会只拷贝对象和数组的引用,无论对新旧数组的哪一个进行了修改,两者都会发生变化。
深拷贝:完全的拷贝一个对象,即使嵌套了对象,两者也相互分离,修改一个对象的属性,也不会影响另一个。