zoukankan      html  css  js  c++  java
  • JavaScript数据在内存中储存方式

    详情来源于个本人博客: https://shengchangwei.github.io/al-data/

    > Js的数据类型包括两种:

    基本数据类型:String、Boolean、Number、undefined、null、Symbol
    
    引用数据类型(复杂数据类型):Object
    

    在内存中分为栈区(stack)和堆区(heap),基本数据类型存放在栈区,引用数据类型存放在堆区,

    > 基本数据类型:

    1. 声明一个变量a的时候,会在栈里面开辟出一块新的内存空间,用来存放这个变量a的值
    2. 当变量 a 储存的数值发生改变时,栈区里对应的那块内存里存的数据也会发生改变
    3. 再声明一个变量b,并把变量a赋值给变量b,此时会在栈内开辟一个新空间用来储存变量b。
    4. 这时变量a和变量b对应栈内存中两个空间,修改其中一个不会影响到另一个。

    > 复杂数据类型:

    1. 声明一个对象var obj1 = {name: ‘sheng’}, 此时会在堆中开辟一块空间存放obj1值{name: ‘sheng’}
    2. 在栈中开辟一个空间存放指向obj1值的指针,obj1通过这个指针可以拿到堆中的值
    3. 如果将obj1这个对象赋值给obj2时,此时其实赋值给obj2是栈中的指针,
    4. 那么obj1和obj2通过相同的指针指向是同一个值,修改其中一个对象的值,会影响到另一个对象。
    5. 如果对obj1重新赋值的话,那么这个对象会堆中的另一块区域,不会在与obj2共享同一块区域。

  • 相关阅读:
    CSS基本
    Visual Basic相关图书推荐
    Docker相关图书推荐
    PASCAL相关图书推荐
    正则表达式相关图书推荐
    Go语言相关图书推荐
    F#相关图书推荐
    Ruby相关图书推荐
    PHP相关图书推荐
    Swift相关图书推荐
  • 原文地址:https://www.cnblogs.com/shengmo/p/10863469.html
Copyright © 2011-2022 走看看