美文网首页
03-数据_变量_内存01

03-数据_变量_内存01

作者: 源大帝 | 来源:发表于2017-08-20 21:45 被阅读0次

    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. 释放内存
      • 局部变量: 函数执行完自动释放
      • 对象: 成为垃圾对象==>垃圾回收器回收

    相关文章

      网友评论

          本文标题:03-数据_变量_内存01

          本文链接:https://www.haomeiwen.com/subject/dcotdxtx.html