javascript - 为什么我的 javascript 参数没有传递 "by reference"?

标签 javascript

我确定我在这里遗漏了一些明显的东西,但我希望 changeMe 方法的参数“通过引用”传递 - 换句话说,对函数内参数的更改将更改变量在函数之外。

以下是在 jsfiddle 中运行的,使用 Chrome 的 F12 开发者工具来显示控制台输出。 http://jsfiddle.net/fzEpa/

var object1 = { Property1: 'Value1' };
changeMe(object1);
console.log(object1);

function changeMe(refToObject) {
    console.log(refToObject);
    refToObject = { Property1: 'Value2' };
    console.log(refToObject);
}

最佳答案

它是通过引用传递的,但它是对对象的引用,而不是对 object1 变量的引用(它也是对对象的引用)。

您正在使用对新对象的引用覆盖对该对象的引用。

这会完整保留对原始对象的原始引用。

要修改对象,您可以这样做:

function changeMe(refToObject) {
    refToObject.Property1 = 'Value2';
}

关于javascript - 为什么我的 javascript 参数没有传递 "by reference"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16060628/

相关文章:

javascript - 如何在 JavaScript 中通过名称作为字符串来寻址变量?

javascript - 在 Javascript 中查找指数数的最后六位数字?

javascript - 用于替换多个缩写的 jQuery/Javascript 解决方案

javascript - Highcharts 日期

javascript - 想要 Bxslider Pager 直接滑动到合适的幻灯片

javascript - 浏览器是否仍然默默地吞下未处理的拒绝 promise ? Node 呢?

javascript - Chrome Extension Content Script - 使用 JavaScript 抓取 YouTube 视频标题

javascript - 为什么 Google 标签管理器会附加在正文末尾?

javascript - 通过将鼠标悬停在子菜单上进行选择时,下拉菜单会消失

javascript - Google map 在 Safari 5.1.7 中不显示