function rotr(arrToRotr1, howRot) {
if (howRot > arrToRotr1.length) {return console.log('Ошибка, количество здвигов вправо больше длины масива');}
let resArr = arrToRotr1;
for (var i=0;i<howRot;i++) {
resArr.unshift(resArr.pop());
}
return resArr;
}
var allchars = ['a', 'b', 'c', 'd'];//
console.log(allchars);//['a', 'b', 'c', 'd']
var rot22 = rotr(allchars, 1);
console.log(rot22);//[ 'c', 'd', 'a', 'b' ]
console.log(allchars);//[ 'c', 'd', 'a', 'b' ]
функция rotr - циклический сдвиг вправо элементов массива, почему она изменяет массив allchars, что в нее передается?
Массив - ссылочный тип. После этой строчки
let resArr = arrToRotr1;
обе переменные, resArr и arrToRotr1, ссылаются на один и тот же массив.
upd: почитать можно тут http://learn.javascript.ru/array
Update
let resArr = arrToRotr1.slice(); // resArr - новый массив с теми же элементами
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости