gpt4 book ai didi

javascript - 为什么 "sort"对所有数组进行排序?

转载 作者:行者123 更新时间:2023-11-28 17:58:19 25 4
gpt4 key购买 nike

我有这个(Javascript):

function f(n){
var arr = (''+n).split();
var sortedArr = arr;
sortedArr.sort();
}

当我返回arr和sortedArr时,它们都已排序。为什么是这样? .sort方法不应该只在这里对sortedArr进行排序吗?

最佳答案

使用 Array.prototype.slice,将解决该问题。

function f(n){
var arr = (''+n).split();
var sortedArr = arr.slice();
sortedArr.sort();
}

编辑

原因是 javascript 中的数组和对象是引用,因此是可变的。

分配时,sortedArr=arr;您实际上是在复制引用而不是值。即喜欢如果arr存储在地址1267,那么sortedArr现在也将指向1267,而不是复制不同位置的值。

同时,当我们执行sortedArr=arr.slice();时,它实际上是将值复制到其他位置(假设为1367),从而将sortedArr指向不同的存储位置。

而且我想很明显,如果通过引用复制值,则通过任何引用更改值也会反射(reflect)另一个引用的更改。

关于javascript - 为什么 "sort"对所有数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067359/

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