javascript引用数据类型和堆内存

来源:互联网 发布:sql注入语句怎么使用 编辑:程序博客网 时间:2024/06/05 07:34

整理引用数据类型和堆内存的内容:

基本类型值:指的是保存在栈内存中的简单数据段;

引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值。

两种类型值访问方式的区别:

基本类型值:按值访问,操作的是他们实际保存的值;

引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值;


基本类型变量的复制:

 从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上,改变源数据不会影响到新的变量(互不干涉);

 (栈内存中申请一块新的区域做为新变量,再把旧变量的值赋值到新变量的区域)

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;

阅读全文
0 0
原创粉丝点击