Почему получаю разный результат?
Почему получаю разный результат в 3х вроде идентичных вариантах записи?
1вар
let str="background-color";
let arr=str.split('');
arr.splice(-6, 2, "C");
let newArr=arr.join('');
alert(newArr); // результат backgroundColor
2вар
let str="background-color";
let newStr=str.split('').splice(-6, 2, "C").join('');
alert(newStr); // результат -c
3вар
function camelize() {
let str="background-color";
let arr=str.split('');
arr.splice(-6, 2, "C");
let newArr=arr.join('');
alert(newArr);
} // результат undefined
Ответы (1 шт):
В первом варианте, вы записываете в переменную arr массив и меняете его методом splice. Массив изменяется, соответственно остальные методы отрабатывают как нужно. Если бы не было записи в переменную arr, splice вернул бы удаленные элементы.
Во втором варианте метод splice возвращает массив удаленных элементов ([-c] - в данном случае), и работа продолжается именно с удаленными элементами. Так как у вас изначально только строка, splice возвращает именно массив удаленных данных и ничто другое не изменяется. Поэтому нужный результат не достигается.
В третьем варианте, вы ничего не возвращаете в функции. Поэтому undefined. Если, вы вызовете функцию (camelize()), то alert из функции покажет результат как в первом варианте.