javascript - 为什么我的输入参数在此代码段中被修改?
问题描述
当我在下面的 JavaScript 代码中inArr
更新局部变量时,为什么我的输入参数被修改了?arr
function test(inArr) {
var arr = inArr;
for (let i = 0; i < 3; i++) {
arr.push(i);
console.log( "arr = ", arr, "inArr = ", inArr );
}
}
test([]);
这输出:
arr = [ 0 ] inArr = [ 0 ]
arr = [ 0, 1 ] inArr = [ 0, 1 ]
arr = [ 0, 1, 2 ] inArr = [ 0, 1, 2 ]
解决方案
JavaScript 数组是通过引用分配的,因此当您进行分配时,两个变量都指向内存中的同一个数组。对一个的任何改变也会改变另一个。
您可以使用扩展运算符创建具有这些值的新数组:
var arr = [...inArray];
推荐阅读
- sql - 在 SQL Server 表中取消透视和透视
- flutter - 如何在颤动中覆盖样式
- python - 如何制作当前目录的zipapp?
- java - 带参数的 Kotlin 扩展
- python - 尝试手动复制 sqlite 行时出现无法识别的令牌错误
- android - 如何摆脱 Android-Kotlin 中的 `Unresolved reference: NavController` 错误?
- c++ - 如何 std::forward 类模板参数
- python-3.x - 使用 Pandas 或 PySpark 对多列进行分组并将行转换为列
- reporting-services - Is it possible to use a query with stored procedures inside if else statement as a Dataset in SSRS?
- amazon-web-services - alexa技能免费怎么赚钱,但亚马逊服务要收费?