Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

堆栈的认识 #5

Open
gdutwyg opened this issue Jul 1, 2018 · 0 comments
Open

堆栈的认识 #5

gdutwyg opened this issue Jul 1, 2018 · 0 comments
Labels

Comments

@gdutwyg
Copy link
Owner

gdutwyg commented Jul 1, 2018

堆栈

在计算机领域中,堆栈是两种数据结构,它们只能在一端(称为栈顶(top))对数据项进行插入和删除

  • 堆:先进先出,由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等
  • 栈:先进后出,动态分配的空间 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收

js中的堆栈

js数据类型分为两种:

  • 基本类型:UndefinedNullBooleanNumberString,属于值传递,存放在 栈(stack)内存中的简单数据段,数据大小确定,内存空间大小可以分配
  • 引用类型:即存放在 堆(heap)内存中的对象,大小不定也不会自动释放,变量实际保存的是一个指针,这个指针指向堆内存。

之前在微信群看到一个问题

const obj = {};
obj.a = 'abc'
console.log(obj)

为什么obj常量化后,还能增加属性?
看下这个图你就明白了(图来自隔壁王叔叔)

image

@gdutwyg gdutwyg added the js label Jul 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant