由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
本文标题:前端基础进阶(一):内存空间详细图解
本文链接:https://www.haomeiwen.com/subject/wfakittx.html
网友评论
而“这里的引用,我们可以理解为保存在变量对象中的一个地址,该地址与堆内存的实际值相关联。”
我想咨询下,js中所有函数传参时都是按值传递,那么当实参是object类型时,传递的不是地址吗
var a = [],b
for(;;) a.push(null) // 溢出崩溃
for(;;) a.push(undefined) // 不崩溃
for(;;) a.push(b) // 溢出崩溃
1.我们在声明变量的时候就分配入栈了吗?
2.undefined,null在分配入栈有什么区别。
很好!
棒棒哒!
但是堆和栈确实是两种东西 我从没听说过栈可以叫做堆栈的
这个地方作者是不是再考虑考虑
问题如下:
A:
var a = {name:'tom'}
a == null;
正常运行
B:
{name:'tome'} == null
报语法错误
我有几个疑问:
1.{name:'tom'}如果没有变量来接收它,那它以什么形式存在内存中?
2.我原先猜测引用类型数据要变量接收才能比较,但是[1,2,3] == null妥妥打脸
3.另一个猜测是{name:'tom'}被当成了代码段来执行
4.B这行代码内部究竟执行了什么才会报错?
4.为什么会出现A.B不同的结局?
var a = 20; // 在内存中给数值变量分配空间
alert(a + 100); // 使用内存
a = null; // 使用完毕之后,释放内存空间
//这块用a=undefined释放是不是更好点
```
欢迎订阅《前端文章收藏夹》https://toutiao.io/subjects/74981
var a1 = 0; // 栈
var a2 = 'this is string'; // 栈
var a3 = null; // 栈
var b = { m: 20 }; // 变量b存在于栈中,{m: 20} 作为对象存在于堆内存中
var c = [1, 2, 3]; // 变量c存在于栈中,[1, 2, 3] 作为对象存在于堆内存中
a1、a2、a3、b、c 都是存储在栈内存中,遵循先进后出,那 a1 作为先进的,我需要用到这个值的时候,内存经历了什么处理呢?会将 a2、a3、b、c 都弹出吗?如果弹出了都到哪里去了呢?
js中的基础类型变量,都是存放在变量对象中,并不是存放在栈内存中。
因此你的问题就很容易解决了。由于我自己理解错了,导致文章很多地方都错了,所以建议重新阅读一下,这次应该没错了,参考了很多资料 ,真是对不起大家啊.... ..