상세 컨텐츠

본문 제목

혼공단 자바스크립트 3주차 미션 - Chapter 04

Developer/혼공단

by cepiloth 2022. 1. 25. 10:15

본문

728x90
반응형

기본 미션

비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기

비파괴적 처리(non destructive) : 처리 후 원본 내용이 변경되지 않는 처리

파괴적 처리(destructive) : 처리 후에 원본 내용이 변경되는 처리

 원본의 상태 변화에 따라서 파괴적, 비파괴적 처리로 구분할 수 있으며 배열과 같이 거대해질 수 있는 자료는 메모리를 절약할 수 있게 대부분 `파괴적 처리`로 이루어졌습니다. 하지만 파괴적 처리는 메모리를 절약할 수는 있지만 원본이 변경되기 때문에 위험할 수 있습니다. 따라서 메모리가 여유로운 현대의 프로그래밍 언어와 라이브러리는 자료 보호를 위해 대부분 `비파괴적 처리`를 합니다.

 현재 사용되고 있는 대부분의 프로그래밍 언어는 메모리가 부족했던 과거부터 메모리가 여유로운 현재까지 계속해서 표준이 제정되고 개발되고 있습니다. 초기에는 표준화된 것들은 파괴적 처리를 많이 하였으나, 최근 표준화된 것들은 비파괴적 처리를 많이 합니다.

 필자도 초기 50MB 메모리에서 코딩을 시작 했는데 근래에 와서는 2GB, 4GB 이상이 메모리를 사용하면서 메모리를 아끼는? 코드들을 제거하고 OS에 자원을 최대한 활용하여 최대의 성능을 이끈 프로그래밍 위주로 하고 있다. 자바스크립트도 이러한 이유로 인하여 비파괴적, 파괴적 처리라는 것이 생겼다고 본다.

더 이상 공짜 점심은 없다. 라는 구절이 생각났다. 자세히 알고 싶은 분들은 URL을 참고하길 바란다.

 

선택 미션

p.173 확인 문제 3번 문제 풀고, 풀이 과정 설명하기

 

1번 문제는 비파괴적 처리이다. split 메서드를 호출하였지만 원본 strA가 변하지 않았다.

> const strA = "사과,배,바나나,귤"
undefined

> strA.split(",")
(4)["사과", "배", "바나나", "귤"]

> strA
"사과,배,바나나,귤"

 

2번 문제는 파괴적 처리이다. arrayB에 push 메서드로 감이 추가되어 원본 arrayB가 변하였다.

> const arrayB = ["사과", "배", "바나나", "귤"]
undefined

> arrayB.push("감")
5

> arrayB
(5)["사과", "배", "바나나", "귤", "감"]

 

3번 문제는 비파괴적 처리이다. map 메서드를 호출하였지만 원본은 변하지 않았다.

> const arrayC = [1, 2, 3, 4, 5]
undefined

> arrayC.map((x) => x * x)
(5) [1, 4, 9, 16, 25]

> arrayC
(5) [1, 2, 3, 4, 5]

 

4번 문제는 피파괴적 처리이다. trim 메서드를 호출하였지만 원본은 변하지 않았다.

> const strD = " 여백이 포함된 메시지  "
undefined

> strD.trim()
"여백이 포함된 메시지"

> strD
" 여백이 포함된 메시지  "

 

해당 문제는 원본이 변하는지 변하지 않는지만 확인하면 풀 수 있는 문제이다.(파괴적, 비파괴적 처리에 대한 이해를 확인하는 문제)

728x90
반응형

관련글 더보기

댓글 영역