美文网首页
关于js引用类型和基本类型

关于js引用类型和基本类型

作者: 18dian | 来源:发表于2019-01-22 17:22 被阅读0次

    基本类型:number、string、boolean、null、undefined;
    引用类型:object;

    1.基本类型值的复制

        <script>
            var a = 10;
            // 将a的值赋值给b;
            var b = a;
            // 重新给b赋值
            var b = 20;
            // 分别打印a和b;
            console.log(b);
            console.log(a);
        </script>
    

    打印结果:


    20190122173831.png

    上述代码中,可以看出全局变量a和b是完全独立的两个变量,因为在重新为b赋值时,并没有影响到a的值,实际上,这里涉及到栈内存和堆内存,基本类型的复制只发生在栈内存中,如下图所示:

    timg.jpeg

    相当于全局变量中最开始只有a,然后我们用a去初始化b,在全局对象中增加了一个变量b,b只是保存了a复制的一个副本;
    补充:基本类型是按值操作,操作的是保存在变量中实际的值,并且无法为基本类型的值动态的添加属性;

    2.引用类型

    javascript不能像其他语言一样,不能操作对象所在的内存空间,也就是堆内存,所以我们实际操作的是对象的引用而不是实际的对象;

    看下面例子:

        <script>
            var a = {
                name: '李林檀'
            };
    
            var b = a;
            b.name = 'llt';
            console.log(a.name,b.name)
        </script>
    

    打印结果为:llt llt

    打印结果可见,我们对b对象的修改影响到了a,也称浅拷贝,实际上,当我们用a去初始化b的时候,在栈内存中,保存的是一个地址,这个地址的指向并没有改变,a和b在栈内存中保存的是同一个地址,所以,当我们操作b的时候,a也就受到了影响,如下图所示:

    20190122180204.png

    相关文章

      网友评论

          本文标题:关于js引用类型和基本类型

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