首页 > web前端 > js教程 > 在 JavaScript 中传递给函数时,原始值和引用值有何不同?

在 JavaScript 中传递给函数时,原始值和引用值有何不同?

Susan Sarandon
发布: 2024-11-16 10:21:02
原创
487 人浏览过

How do primitive values and reference values differ in JavaScript when passed to a function?

JavaScript 中的原始值和引用值

在 JavaScript 中,可以为变量分配原始值或引用值。原始值(例如布尔值、数字和字符串)直接存储在变量的内存位置中。

创建引用值(例如数组或对象)时,实际上并未存储该对象或数组变量本身。相反,您存储的是对内存中存储对象或数组的位置的引用。这意味着如果您更改对象或数组,即使变量本身没有更改,更改也会反映在变量中。

示例

以下JavaScript 代码创建一个原始值和一个引用值:

var name = "John"; // Primitive value stored in the variable
var shoppingCart = []; // Reference value stored in the variable
登录后复制

在此示例中,变量名称包含原始值“John”。变量 ShoppingCart 包含对存储在内存中的数组对象的引用。

按值传递值与按引用传递值

当您将原始值传递给函数时,传递该值的副本。这意味着对函数内的值所做的任何更改都不会影响存储在变量中的值。

将引用值传递给函数时,传递的是引用本身,而不是副本。这意味着对函数内的对象或数组所做的任何更改也会影响存储在变量中的对象或数组。

示例

以下 JavaScript 代码演示通过值和引用传递值:

// Pass by value
var name = "John";

function changeName(name) {
  name = "Jane";  // Changes the local copy of the value
}

changeName(name);

console.log(name); // Outputs "John" because the original value is not changed

// Pass by reference
var shoppingCart = [];

function addProduct(shoppingCart) {
  shoppingCart.push("Apple");  // Changes the object stored in the reference
}

addProduct(shoppingCart);

console.log(shoppingCart); // Outputs ["Apple"] because the original object is updated
登录后复制

在第一个示例中,函数changeName 传递原始值“John”。当函数将值更改为“Jane”时,存储在变量名称中的原始值不受影响。

在第二个示例中,函数 addProduct 传递了引用值 shoppingCart。当函数将产品“Apple”添加到数组时,存储在变量 shoppingCart 中的原始对象也会更新。

以上是在 JavaScript 中传递给函数时,原始值和引用值有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板