深入解剖JS 中只有按值传递,没有按地址(引用)传递

本文深入探讨了JavaScript中的参数传递机制。不论是基本类型还是引用类型,JavaScript都是按值传递。对于基本类型,直接复制值;而对于引用类型,复制的是指向堆内存中对象的引用。尽管在局部作用域修改引用类型副本的属性会影响原始值,但重新赋值不会。函数参数的传递同样遵循这一原则,证明了JavaScript始终是按值传递。
摘要由CSDN通过智能技术生成

数字、字符串:把值直接复制进去;数组、对象:把变量地址复制进去。

ECMAScript 中,所有函数的参数都是按值来传递的。基本类型值的传递和基本类型变量复制一致(采用在栈内新建值),引用类型值的传递和引用类型变量的复制一致(栈内存放的是指针,指向堆中同一对象

1.基本类型的传递

//在基本类型参数传递的时候,是复制栈帧的拷贝操作。外部声明的变量num和函数参数的num,拥有完全相同的值,但拥有完全不同的参数地址,两者谁都不认识谁,在函数调用返回的时候弹出函数参数num栈帧。所以改变函数参数num,对原有的外部变量没有一点影响。
function add(num){
   num+=10;
   return num;
}
num=10;
add(num);//20
num;//10

2.引用类型的传递

引用类型的值是什么东西?基本类型的数据是存放在栈内存中的,引用类型的数据是将栈内存中的数据存放在堆内存中的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值