js变量存储堆栈分析

js变量存储堆栈分析

Js的变量和其他语言区别很大。
特点:
变量松散类型 – 只在特定的时间保存特定值的一个 名字。不存在定义某个变量必须保存哪种数据类型,变量的值及其数据类型可在脚本的生命周期内改变。

分类:

|- 基本类型值

|- 引用类型值
在给一个变量赋值时,解析器会确定这个值是基本类型值还是引用类型值
在这里插入图片描述

所有函数的参数都是按值传递的。
在局部作用域中修改的对象会在全局中反映出来就说明参数是按值传递的(X)
2.复制变量值

基本类型值

如果从一个变量向另一个变量复制基本类型值,会在变量对象上创建一个新值,然后把该值复制为新变量分配的位置上。

var store1 = china;
var store2 = store1;    //store1 store2 完全独立,两个变量的任何操作不会相互影响。

图片进行详解
引用类型值
当一个变量向另一个变量复制引用类型值时,同样也会将存储在变量对象中的值复制一份到新变量分配的空间中。

不同之处,这个值是一个指针,指向存储在堆中的一个对象。两个变量实际上引用的是同一个变量。

var obj1 = new Object();
var obj2 = obj1;
obj1.name = "xiaohuang";
console.log(obj2.name); //xiaohuang

/*因为obj1 obj2 指向的是同一只obj
所以为obj1添加name属性后,通过obj2也可以访问这个属性*/

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值