JavaScript 中的引用传递与值传递
在 JavaScript 中将数据传递给函数时,了解引用传递和引用传递之间的区别至关重要并按值传递。这种区别影响数据在函数和调用者之间共享和修改的方式。
按值传递
对于原始数据类型(字符串、数字、布尔值),JavaScript总是按值传递。这意味着创建原始值的副本并将其传递给函数。函数内对副本所做的任何更改都不会影响函数外的原始变量。
按引用传递
对象(包括数组)按引用传递在 JavaScript 中。这意味着该函数接收对象的引用,而不是副本。函数内对对象属性所做的任何更改都会影响函数外部的原始对象。
示例
考虑以下函数:
function f(a, b, c) { a = 3; b.push("foo"); c.first = false; }
当使用以下参数调用时:
var x = 4; var y = ["eeny", "miny", "mo"]; var z = {first: true}; f(x, y, z);
x 的值保持不变,因为它是按值传递的。原来的y数组是通过push()操作直接修改的,所以它的内容发生了变化。同样,z的第一个属性被修改,影响原始对象。
独立对象复制
要创建对象的完全独立副本,需要使用一种创建具有相同属性值但不引用原始对象的新对象的方法。一种常见的方法是使用 JSON.parse(JSON.stringify()) 技术:
var newObject = JSON.parse(JSON.stringify(originalObject));
以上是JavaScript 中按值传递和按引用传递有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!