• 数据_变量_内存


    1,什么是数据?

     *存储在内存中代表特定的东西,本质上是010101...

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

     *一切皆数据

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

       *算术晕眩

       *逻辑运算

       *赋值

       *运行函数

    2,什么是内存?

      *内存条通电后产生的可存储数据的空间(临时的)

      *内存产生和死亡:内存条(电路板)==》产生内存空间==》存储数据==》处理数据==》断电==》内存空间和数据都消失

      *一块小内存的2个数据

        *内部存储数据

        *地址值

      *内存分类

        *栈:全局变量/局部变量

        *堆:对象

    3,什么是变量?

      *可变化的量,由变量名和变量值组成

      *每个变量都对应的一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据

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

      *内存是用来存储数据的空间

      *变量是内存的标识

    问题:var a = xxx, a内存中到底保存的是什么?
    
      1,var a = 3; // xxx是基本数据,保存的就是这个数据
    
      2,var a =  {}; // xxx是对象,保存的是对象的地址值
    
      3,var b = 'abc';
    
        a = b; // 保存的就是这个数据
        var b = {}
    
        a = b; //存的是对象的地址值 
    
      总结:xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)
    /*2个引用变量指向同一个对象,让其中一个引用对象指向另一个对象,另一引用变量依然值此昂前一个对象*/
    
    var a = {age: 13};
    
    function fn2 (obj) {
    
      obj = {age: 15};
    
    } 
    
    fn2(a); // a为实参(将a的内容拷贝一份赋值给了形参obj,所以两个为不同的变量,但是指向同一个地址)
    
    console.log(a.age);
    问题:在js调用函数时传递变量参数时,是值传递还是引用传递?(面试)
      回答:*理解1:都是值(基本/地址值)传递
         *理解2:可能是值传递,也可能是引用传递(地址值)
    var a = 3; function fn (a) { a = a + 1; } console.log(a) // 3
    问题:JS引擎如何管理内存?
    1,内存生命周期   *分配小内存空间,得到它的使用权   *存储数据,可以反复进行操作   *释放小内存空间
    2,释放内存  *局部变量:函数执行完自动释放  *对象: 成为垃圾对象==》垃圾回收器回收

     *全局变量无法释放
    function fn () { var b = {} } fn(); // b是自动释放,b所指的对象是在后边的某个时刻由垃圾回收器回收

     

  • 相关阅读:
    模板笔记2
    模板笔记
    qt打包可执行文件
    合并单独的视频和音频
    模板1
    mysql 数据表中查找重复记录
    mysql左连接右连接(查询两张表不同的数据)
    mysql--构造数据、导入导出
    mysql安装
    linux下启动tomcat服务
  • 原文地址:https://www.cnblogs.com/zhangyezi/p/13598872.html
Copyright © 2020-2023  润新知