JS学习笔记

JS的变量存储

2018-09-07  本文已影响0人  zh2443

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’

上一篇 下一篇

猜你喜欢

热点阅读