Что приведенный ниже код выведет на консоль и почему?
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));
Out Put будет: «массив 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 являются просто ссылками на один и тот же объект».