存放的是值且互不干扰
)
注: 理论上JS中没有堆栈概念,但JS是借鉴其他语言来的,只是通过堆栈方式,更容易理解代码一些执行方式,便于学习其他语言
分析:
- 假设let num = 10,这是简单数据类型,放在栈里
- 在栈里开辟一个新的空间 把10这个值存进去(明确的值直接放栈里)
- 10这个空间(变量)有个名字即num,这时可以通过num找到栈里面的这个空间
- 假设let obj = {age: 18},这是对象,首先栈里存放地址值,其次堆里存放数据内容,通过地址值指向堆里的数据内容
- 它首先在栈里也开辟了空间,但这时栈里放的不是age:18,不是值,而是存放地址(比如0x112233是一个地址值,这是它们系统内部有个自己专门的编号)
- 而0x112233这个变量名为obj,通过obj找到栈里存放的是地址,而这个地址值指向堆里的数据(相当于obj变量有个指针指向堆里的数据)
- 所以堆里再开辟一个空间存放对象age:18
评论