03-数据_变量_内存01

1.什么是数据?

  • 数据就是存储在内存中代表特定信息,本质上是0101...
    • 数据特点 :可传递, 可运算
    • 内存中所有操作的目标: 对数据的操作
      • 算术运算
      • 逻辑运算
      • 赋值
      • 运行函数

什么是内存?

  • 内存就是RAM 就是我们现在所说的内存条,程序再运行的过程当中会被加载到内存中去。然而我们的硬盘是存储数据的。

    • 硬盘和内存的区别:
      • 内存的读取的速度比硬盘的快,所以我们的数据是内存中运行,在程序运行完毕后数据会自动消失。
        (特点:断电后数据消失)
      • 硬盘是永久存储数据的地方,他的读取速度是不够内存快的。
        **(特点:断电后数据不消失,除非人为删除。) **
  • 内存条通电后产生的可储存数据的空间(临时的)

  • 内存产生和死亡: 内存条(电路版)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失

  • 在我们的JS中,一块内存存储两个数据

    1. 内部存储的数据
    2. 地址值
  • 内存分类
    1.栈内存: 全局变量/局部变量
    (也为两部分:第一部分为变量名。第二部分为值)
    2.堆内存: 对象

如图

01.png

02.png

03.png
04.png

什么是变量?

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

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

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

相关问题

问题: var a= xxx; 问a内存中到底保存的是什么?

  • 如果xxx是基本数据, 保存的就是这个数据。
  • 如果xxx是对象, 保存的是对象的地址值。
  • 如果xxx是一个变量, 保存的xxx的内存内容(可能是基本数据, 也可能是地址值)

关于引用变量赋值问题

  • 2个引用变量A,B指向同一个对象, 通过A变量修改对象内部数据, B变量看到的是修改之后的数据
  • 2个引用变量A,B指向同一个对象, 让A引用变量指向其他对象, B引用变量依然指向原来对象
var obj1 = {name:"小明"};
var obj2 =obj1;
obj1.name = "小红"; 
console.log(obj2.name); // 小红
obj1={age:15}; #此时,只有obj2 指向{name:'小红'}   obj1此时指向新的对象
console.log (obj1.name) // undefined
console.log (obj2.name) // 小红

问题: 在js调用函数时传递变量参数时, 是值传递还是引用传递

  • 理解1: 都是值(基本/地址值)传递
  • 理解2: 可能是值传递, 也可能是引用传递(地址值)

问题: JS引擎如何管理内存?

  1. 内存生命周期
    • 分配小内存空间, 得到它的使用权
    • 存储数据, 可以反复进行操作
    • 释放小内存空间
  2. 释放内存
    • 局部变量: 函数执行完自动释放
    • 对象: 成为垃圾对象==>垃圾回收器回收
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,445评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,932评论 18 399
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,342评论 30 472
  • 今日心得 1.来自张潇雨 因为1999年互联网时代的到来,为创业而创业属于“命题作文”的携程,竟然能写得如此成功:...
    Pheeb阅读 2,563评论 0 0
  • 两点一线,我生活的两点一头儿拴在工作上,一头儿拴在家庭里。这就是我生活的全部,安静而平淡,幸福而充实。 今儿个和往...
    一人独占一江水阅读 3,610评论 0 1