复习3--js高级

关于赋值和内存的问题

  • 问题一:var a = xxx a 内存中保存的是什么
    • 基本数据类型时:保存的就是这数据
    • 对象时:保存的是对象的地址值
    • 变量时:保存的都是xxx的内存的内容
      • 可能基本数据,也可能时地址值
    var a  = 'avc'
    var b = a
    

    关于引用变量赋值问题

  • 问题二:关于引用变量赋值问题
    • 2个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的也是修改之后的数据
    • 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,宁一个引用对象还是指向前一个对象
       var a = {age:124}
       var b = a;
       console.log(b.age);//124


       var a1 = {age:123}
       var b1 = a1;
       a1 = {name:'张三'}
       console.log(b1.age,b1.name);//123  undefined

       var a2 = {age:18}
       var b2 = a2;
       a2={age:17,name:14}
       console.log(b2.age,b2.name); //18 undefined

       var  a3 = {age:11}
       var b3 = a3;
       a3.name='高呼口号';
       console.log(b3.name); //高呼口号
       
       var a4 = {num:10}
       function fn(obj){
           obj = {num:11}
          // 里面为垃圾对象
       }
       fn(a4)
       console.log(a4.num); //10

       var a5 = {num:5}
        function fu1(obj){
           // return obj = {num:6}
           return  obj = {num:6}
          // 里面为垃圾对象 (函数指向完,函数内部的局部变量就会自动释放)
       }
       fu1(a5);
       console.log(a5.num);

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

  • 理解1:都是值(基本数据类型/地址值)传递
  • 理解2:可能都是值传递,也可能是引用传递
   var a = 3 
        function fn(a){
            a=a+1
        }
        fn(3)
        console.log(a);
        var b = {name:'韩国卡'}
        function fn1(){
            b={name:'zhans'}
        }
        fn1();
        console.log(b.name);

JS引擎如何管理内存?

局部内存在调用的时候参数,在结束的时候释放

    1. 内存生命周期
    • 分配小内存空间,得到它的使用全
    • 存储数据 ,可以反复进行操作
    • 释放当前小内存空间
    1. 释放内存
    • 局部变量:函数执行完自动释放
    • 对象:成为垃圾对象==>垃圾回收器回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值