关于javascript:JavaScript高级-数据-变量-内存-及相关问题

6次阅读

共计 989 个字符,预计需要花费 3 分钟才能阅读完成。

什么是数据

  • 存储在内存中代表特定信息的货色,实质上是 0101……
  • 数据的特点:可传递,可运算
  • 所有皆数据
  • 内存中所有操作的指标:数据

    • 算术运算
    • 逻辑运算
    • 赋值
    • 运行函数

    什么是内存

  • 内存条通电后产生的可存储数据的空间(长期的)
  • 内存产生和死亡:内存条(电路板)==> 通电 ==> 产生内存空间 ==> 存储数据 ==> 解决数据 ==> 断电 ==> 内存空间和数据都隐没
  • 一块小内存的两个数据

    • 外部存储的数据
    • 地址值
  • 内存分类

    • 栈:全局变量 / 局部变量
    • 堆:对象

    什么是变量

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

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

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

对于援用变量赋值问题

  • 2 个援用变量指向同一个对象,通过一个变量批改对象外部数据,另一个变量看到的是批改之后的数据
  • 2 个援用变量指向同一个对象,让其在一个援用变量指向另一个对象,另一引动变量仍然指向前一个对象

    var obj1 = {name:'Tom'};
    var obj2 = obj1;
    obj2.age = 12;
    consolo.log(obj1.age);   //12
    
    function fn(obj){         //obj 赋值 obj1
        obj.name = 'A';
    }
    fn(obj1);
    console.log(obj2.name);   //A
    
    var a = {age:12};
    var b = a;
    a = {name:'BOB',age:13};
    console.log(b.age,a.name,a.age) //12 Bob 13
    
    function fn2 (obj){obj={age:15}    //{age:15} 赋值给 obj
    }
    fn2(a)
    console.log(a.age)    //13
    

在 js 调用函数时传递变量参数是,是值传递还是援用传递

  • 了解 1:都是值(根本 / 地址)传递
  • 了解 2:可能是值传递,也可能是援用传递(地址值)

    var a  = 3;
    function fn (a) {a = a+1;}
    fn(a)            // 3 赋值给 a
    console.log(a)    //3
    

function fn2 (obj) {console.log(obj.name);
}
var obj = {name:'tom'};
fn2(obj)

JS 引擎如何治理内存

1. 内存生命周期

  • 调配小内存空间,失去使用权
  • 存储数据,能够重复进行操作
  • 开释小内存空间,

2. 开释内存

  • 局部变量:函数执行完主动开释
  • 对象:成为垃圾对象 ==> 垃圾回收器回收
正文完
 0