27 JavaScript数据类型与内存管理

Posted  Island

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了27 JavaScript数据类型与内存管理相关的知识,希望对你有一定的参考价值。

javascript共有7种数据类型:

  • number
  • string
  • boolean
  • null
  • undefined
  • obj
  • Symbol

前5种存在栈中,栈中变量名存储的是值,object存在堆中(对象数值类型也存储在堆中),栈中变量名存储的是堆中的地址

obj1 = obj;

obj1拿到的是obj的地址,不是地址中的值,相当于拿到的是一把钥匙,而不是箱子里的内容.假设这个地址是#aaaaaa,那么开启这把箱子的钥匙就有两把,分别是obj和obj1,任何一把都能改变箱子里的内容,箱子里的内容一旦改变,那么任何一把钥匙在此后打开箱子后拿到的都是改变后的值

此时obj对象的属性改变,obj1读到的值也改变 

。。。

综上,可以得出以下三点:

不论是对象还是前5原始数据类型,它们的变量名都存储在栈中

前5种基本数据类型的变量名在栈中存储的是值,但是它们的方法是通过相应的对象数据类型调用的,所以存取是栈调用,调用方法是堆调用,即对象调用

对象存储在堆中,栈中存储的对象变量名存储的是堆中的地址,对象改变,是堆中的属性改变,但是地址并不改变

以上是关于27 JavaScript数据类型与内存管理的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript内存管理闭包和内存泄漏

七LED将为我闪烁:控制发光二级管 ——学习笔记

javascript数据类型--- 数据变量与内存

C++从入门到入土第六篇:C/C++内存管理

OC 内存管理:MRC与ARC

大数据Flink内存管理