如何在 JavaScript 中传递值
JavaScript 是一种动态语言,变量可以在运行时重新赋值。程序员经常需要在函数、对象和事件处理程序之间传递值。
传递基本值
基本值类型(字符串、数字、布尔值、null、undefined)可以通过值传递。这意味着创建了该值的副本,然后将副本传递给另一个变量、函数或对象。
1
2
3
4
5
6
let name = "John";
let anotherName = name;
name = "Bob";
console.log(anotherName); // 输出 "John",因为创建了 name 的副本
传递引用值
引用值类型(对象、数组)通过引用传递。这意味着将指向该值的引用传递给另一个变量、函数或对象。两个变量都指向同一个内存位置。
1
2
3
4
5
6
let person = { name: "John" };
let anotherPerson = person;
person.name = "Bob";
console.log(anotherPerson.name); // 输出 "Bob",因为两个变量都指向同一个对象
注意: 对于引用值,传递的不是实际值,而是指向该值的指针。
函数参数
向函数传递参数时,参数是通过值或引用传递的,具体取决于参数的类型。基本值类型作为值传递,而引用值类型作为引用传递。
1
2
3
4
5
6
7
8
function changeName(name) {
name = "Bob"; // 尝试改变局部副本
}
let person = { name: "John" };
changeName(person.name);
console.log(person.name); // 输出 "John",因为 changeName 无法修改对象属性
对象属性
对象属性是引用值,可以传递给其他变量、函数或对象。但是,可以通过点运算符或方括号运算符直接访问对象属性,而不传递引用。
1
2
3
4
5
6
let person = { name: "John" };
let nameCopy = person.name;
person.name = "Bob";
console.log(nameCopy); // 输出 "John",因为 nameCopy 只是一个基本值的副本