电商网站前台功能模块,怎样做信息收费网站,手机app怎么开发的,太原在线网站制作js中#xff0c;内存主要分为两种类型#xff1a;栈内存#xff08;stack#xff09;、堆内存#xff08;heap#xff09;#xff0c;两种内存区域在存储和管理数据时有各自的特点和用途。 栈内存 访问顺序
栈是先进后出、后进先出的数据结构#xff0c;栈内存是内存用…js中内存主要分为两种类型栈内存stack、堆内存heap两种内存区域在存储和管理数据时有各自的特点和用途。 栈内存 访问顺序
栈是先进后出、后进先出的数据结构栈内存是内存用于存放临时变量的一片内存块是一种特殊的列表栈内元素只能通过列表的一端访问这一端成为栈顶另一端称为栈底。
存储数据
栈内存主要用于存储各种基本类型的变量包括Boolean、Number、String、Undefined、Null、Symbol、BigInt以及对象变量的指针。
比如乒乓球盒子盒子顶层的乒乓球是最后放进去的但可以最先被使用如果想要取最底层的乒乓球必须将上面的乒乓球都取出才行这就是栈先进后出、后进先出的特点。
注意闭包中的基本数据类型变量是在堆中而不是在栈中 通过new String类似这种new出来的实例对象也是在堆中而不是在栈中 堆内存 访问顺序
堆内存不同于栈虽然都是存储的一片空间但堆中存储变量没什么规律只会用一块足够大的空间存储变量。js不允许直接访问堆内存中的位置。
存储数据
堆内存主要用于存储像对象Object变量类型的的存储堆内存存储的对象类型数据对于大小这方面一般都是未知的。
注意闭包中的基本数据类型变量是在堆中而不是在栈中 通过new String类似这种new出来的实例对象也是在堆中而不是在栈中
// 基本数据类型-栈内存
let a1 0;
// 基本数据类型-栈内存
let a2 this is string;
// 基本数据类型-栈内存
let a3 null;
// 对象的指针存放在栈内存中指针指向的对象存放在堆内存中
let b { m: 20 };
// 数组的指针存放在栈内存中指针指向的数组存放在堆内存中
let c [1, 2, 3]; 变量复制
基本类型复制
let a 20;
let b a;
b 30;
console.log(a); // 此时 a 的值是多少是 30还是 20
// 答案是20 a、b都是基本类型值是存在栈中的a、b有各自独立的栈空间所以修改了b的值后a不会变化。 引用类型复制
let m { a: 10, b: 20 };
let n m;
n.a 15;
console.log(m.a) // 此时 m.a 的值是多少是10还是15
// 答案是15 m、n都是引用类型栈内存中存放的地址指向堆内存中的对象引用类型的复制会为新的变量自动分配一个新的值保存在变量中但只是引用类型的一个地址指针而已实际指向的是同一个对象。 常常问到的面试题const定义的值是否可以改
答案部分能改部分不能改。
定义基本数据类型后是不可修改的定义对象时不可修改的是指向堆内存中的地址对象内部的属性和方法是可以修改的 栈内存、堆内存优缺点 栈
存储基本数据类型Boolean、Number、String、Undefined、Null、Symbol、BigInt以及对象变量的指针。固定大小栈内存的大小是固定的由操作系统在程序运行时分配数据进栈栈顶指针移动分配空间数据出栈栈顶指针反向移动释放空间。快速访问栈内存采用线性结构访问数据速度非常快。自动管理js引擎会自动管理栈内存分配和回收空间不需要手动介入。函数执行的时候是放在栈里执行的。
堆
存储引用数据类型Object包括普通对象、数组、函数、String(通过拼接方式创建)动态大小堆内存大小是动态的可以根据程序的运行需求进行扩展和收缩。较慢访问堆内存的数据是通过栈中的引用地址访问的所以相对较慢。垃圾回收堆内容中的变量只有在所有的引用都结束后才会被回收。闭包中的局部变量存在堆中。 浏览器的事件机制 对象是放在堆里的常见的基础类型和函数放在栈里函数执行的时候在栈里执行栈里函数执行的时候可能会调一些Dom操作ajaxsettimeout这时候要等栈里所有程序先走走完再执行ajaxajax执行完后结果放在回调队列里队列中代码先进先执行也就是当栈里程序走完再从任务队列中读取事件将队列中的事件放到执行栈中依次执行。
所有同步任务都在主线程上执行形成一个执行栈主线程之外还存在一个任务队列只要异步任务有了运行结果就在任务队列中放置一个事件一旦执行栈里所有的同步任务执行完毕胸痛会读取任务队列中的事件放到执行栈中依次执行主线程从任务队列中读取事件这个过程是循环不断的宏任务、微任务属于队列并不是放在栈中具体看【JS】Promise与setTimeout执行顺序_js settimeout 同步执行-CSDN博客
深拷贝、浅拷贝
引用类型基本类型数据类型数组、对象、Date、RegExp、函数、特殊的基本包装类型String、Number、Boolean以及单体内置对象Global、Mathstring、number、boolean、undefined、null、symbol存储位置栈中存储引用地址堆中存储具体值变量名称和值都存栈中深拷贝“引用地址”和值一起拷贝更改原对象另一个不受影响都是深拷贝浅拷贝只拷贝的是“引用地址”不是值修改两个相同引用地址值是共享的修改原对象另一个对象也变---深拷贝方法 JSON.parse(JSON.stringify(obj))属性值为undefined的会被忽略不支持函数、undefined、Symbol loadsh.deep; jquery.extend(deep,target,object); structuredClone(obj)不支持函数支持对象、基本数据类型 直接赋值var a{}; ba;浅拷贝方法 直接赋值var a{}; ba; 局部作用域内直接使用全局作用域变量 Object.assgin()一层为深拷贝多层为浅拷贝 扩展运算符...一层为深拷贝多层为浅拷贝 [].concat([1,2,3]) -- 文章转载自: http://www.morning.fdfdz.cn.gov.cn.fdfdz.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.glpxx.cn.gov.cn.glpxx.cn http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn http://www.morning.xpfwr.cn.gov.cn.xpfwr.cn http://www.morning.trrhj.cn.gov.cn.trrhj.cn http://www.morning.yjmns.cn.gov.cn.yjmns.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn http://www.morning.smxrx.cn.gov.cn.smxrx.cn http://www.morning.hrzky.cn.gov.cn.hrzky.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.whpsl.cn.gov.cn.whpsl.cn http://www.morning.wgcng.cn.gov.cn.wgcng.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.pwrkl.cn.gov.cn.pwrkl.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.rglzy.cn.gov.cn.rglzy.cn http://www.morning.hqllj.cn.gov.cn.hqllj.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.pftjj.cn.gov.cn.pftjj.cn http://www.morning.xphls.cn.gov.cn.xphls.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn http://www.morning.bmqls.cn.gov.cn.bmqls.cn http://www.morning.rkqzx.cn.gov.cn.rkqzx.cn http://www.morning.xrnh.cn.gov.cn.xrnh.cn http://www.morning.plqkz.cn.gov.cn.plqkz.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.rysmn.cn.gov.cn.rysmn.cn http://www.morning.ypbp.cn.gov.cn.ypbp.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.wqkzf.cn.gov.cn.wqkzf.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.snygg.cn.gov.cn.snygg.cn http://www.morning.bgpb.cn.gov.cn.bgpb.cn http://www.morning.brzlp.cn.gov.cn.brzlp.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.fplwz.cn.gov.cn.fplwz.cn http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn http://www.morning.gygfx.cn.gov.cn.gygfx.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.hsrpc.cn.gov.cn.hsrpc.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.cltrx.cn.gov.cn.cltrx.cn http://www.morning.xjqrn.cn.gov.cn.xjqrn.cn http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.npfrj.cn.gov.cn.npfrj.cn http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.crkmm.cn.gov.cn.crkmm.cn http://www.morning.lwnb.cn.gov.cn.lwnb.cn http://www.morning.kdtdh.cn.gov.cn.kdtdh.cn http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn http://www.morning.bfwk.cn.gov.cn.bfwk.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.lgphx.cn.gov.cn.lgphx.cn