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的变量存储

    js中数据类型包括原始类型和引用类型,其中原始类型(primitives types):undefined,nul...

  • 什么是浅拷贝?什么是深拷贝?

    解决这个问题的前提是:了解过js的变量存储类型、赋值。 懂的就跳过 ============== 变量存储类型分两...

  • js 执行上下文,作用域,变量内存管理

    js 执行上下文,作用域,变量内存管理 JS中变量的定义在内存中包括三个部分:* 变量标示(变量标示存储在内存的栈...

  • 我的JS笔记 -- 变量

    变量是存储信息的容器,在JS中,变量是松散类型的,所以JS中的变量可以用来保存任何类型的数据。所以变量是没有类型的...

  • js的深拷贝与浅拷贝及实现方法

    前提 理解深拷贝和浅拷贝之前,我们先理解下js变量的存储方式。 js变量分为基础类型(Undefined、Null...

  • js变量的存储问题

    首先介绍在js中变量有两种:1、基本变量 2、引用变量 1.基本变量:String、Number、Boolean、...

  • js数组

    js数组 变量用来存储数据,一个变量只能存储一个内容。如果你想存储多个内容,那么就可以用数组解决,一个数组变量可以...

  • JavaScript-总结篇之变量类型

    JS中使用typeof能得到哪些类型? 何时使用===何时使用==? JS中有哪些内置函数? JS变量按照存储方式...

  • 数据地图--前台JS代码

    前端 datamap_search.js 数据地图的控制js 变量:treeParam 原先用来存储树相关信息的,...

  • 关于typeof 和instanceof 原理问题

    一、typeof 原理 js 在底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息 000:对象01...

网友评论

    本文标题:JS的变量存储

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