# 数据、变量和内存

# 数据

  • 存储在内存中代表特定信息的东西,本质上是0101...

  • 数据的特点:可传递,可运算

  • 一切皆数据

  • 内存中所有操作的目标:数据

    • 算术运算

    • 逻辑运算

    • 赋值

    • 运行函数

# 内存

  • 内存条通电后产生的可储存数据的空间(临时的)
  • 内存产生和死亡:内存条( 电路版)==>通电==>产主内存空间==>存储数据==>处理数据==>断电==> 内存空间和数据都消失
  • 一块小内存的2 个数据
    • 内部存储的数据
    • 地址值
  • 内存分类
    • 栈:全局变量/局部变量
    • 堆:对象

# 变量

  • 可变化的量,由变量名和变量值组成
  • 每个变量都对应的一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据

# 内存、数据、变量三者之间的关系

  • 内存用来存储数据的空间
  • 变量是内存的标识

# 相关问题

  1. var a = xxx,a内存中到底保存的是什么?

    • xxx是基本数据,保存的就是这个数据

    • XXX是对象,保存的是对象的地址值

    • xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)

  2. 关于引用变量赋值问题

    • 2个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据

    • 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一个对象

  3. 在js调用函数时传递变量参数时,是值传递还是引用传递?

    • 是值传递
  4. JS引擎如何管理内存?

    • 内存生命周期

      • 分配小内存空间,得到它的使用权

      • 存储数据,可以反复进行操作

      • 释放小内存空间

    • 释放内存

      • 局部变量:函数执行完自动释放

      • 对象:成为垃圾对象==>垃圾回收器回收