요즘 함수형 스타일 공부 중인데, 짝수만 골라서 10배 하고 다 더하는 로직을 원래는 for 돌려서 이렇게 짰거든요.


let sum = 0
for (let i = 0; i < nums.length; i++) {
  if (nums[i] % 2 === 0) sum += nums[i] * 10
}


이걸 map, filter, reduce로 바꾸면 이렇게 되더라고요.


const sum = nums
  .filter(n => n % 2 === 0)
  .map(n => n * 10)
  .reduce((a, n) => a + n, 0)


줄 수는 비슷한데 이렇게 쓰는 게 뭐가 더 낫다는 건지 아직 체감이 잘 안 돼요. 원본 배열을 안 건드린다는 게 불변성이랑 관련 있는 거 같긴 한데, 그게 실무에서 왜 중요한지랑 순수 함수라는 개념이랑 어떻게 이어지는지 좀 풀어서 설명해주실 분 계실까요?