JS的变量存储

作者: zh2443 | 来源:发表于2018-09-07 16:53 被阅读0次

    js中数据类型包括原始类型和引用类型,其中原始类型(primitives types):undefined,null,boolean,number,string,Symbol(ES6新增);引用类型:Object类型。

    1. 原始类型变量存储

    原始类型的变量存放在栈中,且是不可变的。例如:

    var a = 10;

    var b = a;

    a = 20;

    那么栈内存的变化如下:

    对于不可变性,如进行操作:var a = 'str'; a.toUpperCase(); console.log(a); 变量a保持不变,依然为'str'。

    2. 引用类型变量存储

    引用类型变量存储在堆中,变量在栈中保存堆的引用地址。例如:

    var obj = {name:'str'};

    var obj1 = obj;

    obj.name = 'str1';

    console.log(obj1.name); //输出'str1'

    内存的变化如下:

    所以引用类型变量保存的是堆中的地址,一个对象改变导致另一个对象也跟着改变。

    另外,变量在传参时也是按照原始类型传值,引用类型传引用地址的方式传递参数。

    var o = {name:'str'};

    function fn(obj){

      obj.name = 'str1';

    }

    fn(o);

    console.log(o.name);   //输出‘str1’

    相关文章

      网友评论

        本文标题:JS的变量存储

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