javascript中基本数据类型按值传递:string、number、boolean、null、undefined、symbol、bigint的值直接存于栈中,传参时复制独立副本,函数内修改不影响外部变量。

JavaScript 中基本数据类型变量是按值传递的,也就是说,函数内部对参数的修改不会影响外部原始变量。
什么是基本数据类型
JavaScript 的基本数据类型包括:string、number、boolean、null、undefined、symbol(ES6 新增)和 bigint(ES2020 新增)。这些类型的值直接存储在栈内存中,每个变量拥有自己独立的存储空间。
传值过程怎么发生的
当把一个基本类型变量作为参数传入函数时,实际是把该变量的值复制一份,传递给函数内部的新变量。两者互不影响:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 函数内重新赋值,只改变局部副本,不影响外部变量
- 没有引用关系,不存在“修改原值”的可能
- 即使变量名相同,它们在内存中是两个独立的存储单元
举个实际例子
看这段代码:
let a = 10;
let b = a;
function change(x) {
x = 20; // 只改了 x 的副本
}
change(a);
console.log(a); // 输出 10,没变
console.log(b); // 输出 10,也没变
这里 a 和 b 都保存着数字 10 的副本;调用 change(a) 时,x 得到的是 10 的又一个副本,后续对 x 的操作跟 a 完全无关。
和对象传参的区别在哪
对象(包括数组、函数、日期等)是引用类型,传递的是指向堆内存中实际对象的地址副本。因此函数内通过该地址修改属性,外部对象会同步变化。但注意:如果在函数里直接给参数重新赋值(比如 x = {}),那就只是让局部变量指向新对象,不影响外部原变量——这点常被误认为“对象也是传值”,其实仍是传地址的值,不是传对象本身。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










