整理引用数据类型和堆内存的内容:
基本类型值:指的是保存在栈内存中的简单数据段;
引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值。
两种类型值访问方式的区别:
基本类型值:按值访问,操作的是他们实际保存的值;
引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值;
基本类型变量的复制:
从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上,改变源数据不会影响到新的变量(互不干涉);
(栈内存中申请一块新的区域做为新变量,再把旧变量的值赋值到新变量的区域)
var a = 0;
var b = a;
实际在栈内存中,存在 两个变量a和b分别 都等于 0;
引用类型变量的复制:
复制的是存储在栈中的指针,将指针复制到栈中未新变量分配的空间中,而这个指针副本和原指针执行存储在堆中的同一个对象,复制操作结束后,两个变量实际上将引用同一个对象;因此改变其中的一个,将影响另一个;(两个栈内存中的变量指向同一个堆内存的对象,改变任意其中一个的引用变量的值,既是改变堆内存中的对象内容。)
var a = [1,2,3];
var b = a;
b[1] = 3;
console.log(a[1]);
输出结果为 3;