Java,JavaScript 等语言为什么设计成对函数参数的修改可以影响函数外的值

Java JavaScript 等语言,为什么设计成对函数参数的修改可以影响函数外的值?

function changeValue(v) {
  v.value = 2; // 为什么这里要设计成会修改外部的 x,而不自动做深拷贝?
}

let x = { value: 1 };
changeValue(x);
console.log(x.value);

导致我们在写代码的时候经常要手动深拷贝。

阅读 2.2k
3 个回答

如果改变v不会影响x,那么changevalue函数的意义何在?

值类型和引用类型的区别。不影响外部值的函数称为无副作用,这种函数也可以做计算,看看函数式编程^_^

反过来一样,“为什么xx语言数组对象参数是拷贝?”
就是这么设计的,就是这么用的,各有各的好处,各有各的道理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题