JS的基本数据类型和引用数据类型内存存储
栈和堆的特点和区别
栈(stack) :栈会自动分配内存空间,会自动释放,存放基本类型和引用数据类型的变量
所有在函数/方法中定义的变量都是放在栈内存中,随着函数/方法的执行结束,这个函数/方法的内存栈也自然销毁。
优点:存取速度比堆快。 缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
堆(heap) :动态分配的内存,大小不定也不会自动释放,存放引用类型的对象,指那些可能由多个值构成的对象,保存在堆内存中。
堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(参数传递)。创建对象是为了反复利用。
基本数据类型的存储
基本数据类型被保存在栈结构中,在栈结构中会有全局执行环境(也称全局执行上下文),在全局作用域中的基本数据类型就是被保存全局执行环境中的。
引用数据类型的存储
引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象。