gpt4 book ai didi

javascript - 我不明白javascript中的这个array.reverse()

转载 作者:行者123 更新时间:2023-11-30 10:05:45 25 4
gpt4 key购买 nike

下面的代码会向控制台输出什么,为什么?

var arr1 = "john".split('');
var arr2 = arr1.reverse();
var arr3 = "jones".split('');
arr2.push(arr3);
console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));
console.log("array 2: length=" + arr2.length + " last=" + arr2.slice(-1));

输出将是:“数组 1:长度=5 最后=j、o、n、e、s”“数组 2:长度=5 最后=j,o,n,e,s”

这是与此问题一起发布的答案。但是,我不明白这是遵循什么javascript原则或规则?

“reverse() 方法返回对数组本身的引用(即,在本例中为 arr1)。因此,arr2 只是对 arr1 的引用(而不是副本)。因此,当有任何内容时对 arr2 完成(即,当我们调用 arr2.push(arr3); 时),arr1 也会受到影响,因为 arr1 和 arr2 只是对同一对象的引用。”

最佳答案

让我们逐行分解:

var arr1 = "john".split('');

arr1 现在指向数组 ['j','o','h','n']。

var arr2 = arr1.reverse();

arr1 和 arr2 现在指向同一个数组,即 ['n','h','o','j']。

var arr3 = "jones".split('');

arr3 现在指向数组 ['j','o','n','e','s']。

arr2.push(arr3);

arr2 和 arr1 现在都指向数组 ['n','h','o','j', [ 'j','o','n','e','s'] ].请注意,arr3 的元素并未附加到 arr1 和 arr2 指向的数组中。相反,整个数组作为单个元素添加。

console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));

记录 arr1 的长度,即 5('n'、'h'、'o'、'j' 和第二个数组)。 arr1.slice(-1) 获取arr1数组的最后一个元素,也就是包含'j','o','n','e','s'的数组。最后一行重复了这一点,但使用了 arr2,它只是对与 arr1 相同的数组的另一个引用。

关于javascript - 我不明白javascript中的这个array.reverse(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270225/

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