자바스크립트는 자료처리를 위해 다양한 연산자, 함수, 메소드를 제공한다
자료 처리 연산자, 함수, 메소드는 처리 후 원본의 상태 변화에 따라
비파괴적 처리
와 파괴적 처리
로 구분이 가능하다
- 비파괴적 처리 : 처리 후 원본 내용이 변경되지 않는다
- 파괴적 처리 : 처리 후 원본 내용이 변경된다
+ 연산자
를 이용해 문자열을 연결하는 경우
a와 b를 연결해 c를 만든 후에 a와 b를 살펴보면 원본 내용이 변하지 않는다
> const a = "Hello"
> const b = "JavaScript"
> const c = a + b // 문자열 연결처리
> c
// 'Hello JavaScript'
> a
// 'Hello'
> b
// 'JavaScript'
배열의 메소드들은 원본이 변경된다
> const array = ['사과', '배', '바나나']
> array.push('귤')
// 4
> array
// (4) ['사과', '배', '바나나', '귤']
과거에는 컴퓨터 메모리가 많이 부족해서 프로그래밍 언어와 라이브러리는 최대한 메모리를 절약해서 사용하는 방식으로 설계되었다.
그래서 결과가 기본 자료형이면 메모리를 조금만 차지해서 → 원본과 결과를 모두 메모리에 저장해도 크게 무리가 없었다
하지만 배열처럼 크기가 어느 정도인지 모르는 대상의 원본과 결과를 모두 메모리에 저장하는 것은 위험했기에
배열과 같이 거대해질 수 있는 자료는 메모리를 절약할 수 있게 대부분 파괴적 처리로 이루어졌다.
메모리 절약이 가능하지만, 원본이 사라지기에 위험하다
그래서 메모리가 여유로운 현대의 프로그래밍 언어와 라이브러리 는 자료보호를 위해 대부분 비파괴적 처리를 한다
어떠한 처리가 파괴적인지 비파괴적인기 구분하는 방법은 코드를 여러 번 실행하면서 외우는 방법밖에 없다
이러한 이유로 대학교 시험이나 회사 면접에서 어떠한 처리인지 묻는 문제는 많이 출제되니
개념을 기억해두었다가 프로그램을 만들 때마다 쓰임을 익히는 것이 좋다