JavaScript函数传参是按值传递引用。基本类型传递值的副本,修改不影响原变量;对象类型传递引用地址的副本,可修改对象属性但重新赋值参数不影响原引用。

JavaScript中的参数传递机制常被误解为“值传递”或“引用传递”的简单分类,但实际上它遵循一种更准确的说法:按值传递引用,也叫引用的值传递。
当函数接收一个基本类型(如 number、string、boolean、null、undefined、symbol)作为参数时,传入的是该值的一个副本。
说明:示例:
function changeValue(a) {
a = 10;
console.log(a); // 输出 10
}
let num = 5;
changeValue(num);
console.log(num); // 输出 5 —— 原值未变
当参数是对象(包括数组、函数、普通对象)时,JavaScript传递的是该对象在堆内存中地址的副本,也就是“引用的值”。
立即学习“Java免费学习笔记(深入)”;
关键点:示例1:修改对象属性
基于WEB的企业计算,php+MySQL进行开发,性能稳定可靠,数据存取集中控制,避免了数据泄漏的可能,采用加密数据传递参数,保护系统数据安全,多级的权限控制,完善的密码验证与登录机制更加强了系统安全性。
1377
function changeObj(obj) {
obj.name = "changed";
console.log(obj.name); // 输出 "changed"
}
let person = { name: "original" };
changeObj(person);
console.log(person.name); // 输出 "changed" —— 原对象被修改
示例2:重新赋值参数
function reassignObj(obj) {
obj = { name: "new" };
console.log(obj.name); // 输出 "new"
}
let person = { name: "original" };
reassignObj(person);
console.log(person.name); // 输出 "original" —— 原对象未受影响
可以把变量看作一个“指针盒子”:
所以即使传的是引用,也只是复制了地址值,不是共享同一个盒子。
Object.assign({}, obj) 或 {...obj} 创建浅拷贝。JSON.parse(JSON.stringify(obj))(注意局限)或使用专门库。基本上就这些。不复杂但容易忽略细节。
以上就是JavaScript参数传递_值引用机制的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号