美文网首页
javascript中的变量在内存里面原来是这样的!

javascript中的变量在内存里面原来是这样的!

作者: 极客小俊 | 来源:发表于2021-02-09 13:47 被阅读0次

    作者:极客小俊
    我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人!
    原创技术文章

    javascript.png

    标量类型的值 一般存储在栈区中!

    标量指: 整型、浮点、字符串、布尔值、等..

    对象类型分为: 对象引用 和 对象体!

    对象引用存储在栈区中 、对象体存储在堆区中、

    1. 内存空间基本数据存储分析图1
    在这里插入图片描述

    注意: 一旦new一个对象,就必然会在内存中生成新的的区域来存储对象数据

    而且最重要的就是这个时候在内存中对象的地址是不一样的 , 因为 new 会生成一个新的地址在栈区中

    2.对象引用类型地址传递分析图2

    代码案例1:

    var json={
        "username":"张三",
        "age":22,
        "fn1":function(){
            console.log('我的名字叫'+this.username);
        }
    }
    
    //通过对象引用修改属性值1
    /*function fn2(obj){
         obj.username="李四";
    }
    fn2(json);*/
    
    //通过对象引用修改属性值2
    var a=json;
    a.username='李四';
    
    console.log(json.username);
    

    分析图如下

    在这里插入图片描述
    3.对象引用类型地址传递分析图3

    代码案例2:

    function Person(name,age,salary) {
        this.name=name;
        this.age=age;
        this.salary=salary;
    }
    
    function fn1(obj) {
        obj.name='王武';
        obj=new Person('李四',24,8000);
        console.log(obj.name);
    }
    
    var obj=new Person('张三',33,6000);
    
    console.log(obj.name);  //结果: 张三
    
    fn1(obj);               //结果 李四
    
    console.log(obj.name);  // 王武
    

    分析图如下

    在这里插入图片描述

    对象引用 图分析小结:

    1. 在js中, 普通变量值作为函数的参数就是 值传递

    2. 在js中, 对象引用类型的变量作为函数的参数 就是 址传递!

      所以 注意一下 这里的值传递址传递

    3. 一旦new一个对象 就一定会在堆区中创建一个空间,并赋予一个新地址 上面已经说过了!

    4.对象数据的比较

    在js中、基本数据类型数据的比较 是值的比较 值相同就可以了、

    对象类型的比较 要满足两个要求、 第一是值要相同、第二引用地址也要相同才行

    案例代码:

    //--案例1
    var a=[1,2,3];
    var b=[1,2,3];
    
    console.log(a==b);  //结果为false  虽然值一样,但地址是不同的!
    
    
    var a=[1,2,3];
    var b=a;
    console.log(a==b);  //结果为true  因为b指向了a这个地址,并且值也能够得到!
    
    
    

    原理图 如下:


    在这里插入图片描述
    end.jpg bilibili_gif.gif

    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


    如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留个言指出、或者你有更好的想法,欢迎一起交流学习

    相关文章

      网友评论

          本文标题:javascript中的变量在内存里面原来是这样的!

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