gpt4 book ai didi

javascript - 为什么使用 push 或任何数组方法修改原始数组但将其分配给其他东西却没有?

转载 作者:行者123 更新时间:2023-12-01 11:12:18 24 4
gpt4 key购买 nike

我不明白为什么将数组分配给新值不会影响新数组。我知道“push”会修改原始数组,splice 也会修改,而 filter 或 slice 不会,这不是我的问题。我的问题是为什么分配没有。我查看了旧问题的答案,说它是通过引用传递的,但是如果它是通过引用传递的,那么改变它的值也会影响引用。

const modify = (someArray) => {
// modified my array
someArray.push(1)
// modified my original array
someArray[0] = 'A'

// didn't modify my array and I want to know why.
someArray = ['whatever']
}
let myArray = ['a', 'b']
modify(myArray)
console.log(myArray) //  ["A", "b", 1]

最佳答案

在 Javascript(和 Java 或 C#)中,默认情况下所有内容都通过传递!

重要的是要知道,值(value)是什么。这行 let myArray = ['a', 'b'] 在内存中创建新数组并将对它的引用放入 myArray。现在,myArray 的值是对 ['a', 'b'] 所在内存的引用。

当您将它传递给 modify 函数时,作为引用的值会从 myArray复制someArray。这意味着 someArray 可以访问同一数组的同一内存段,因此可以更改该数组内的值,但您不能更改 myArray 的值(这是对该数组)来自 someArray

关于javascript - 为什么使用 push 或任何数组方法修改原始数组但将其分配给其他东西却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com