15일차 - (과제) Koans

dudu00·2022년 11월 11일
0

codestates

목록 보기
15/25

원시 자료형(primitive data type)은 값 자체에 대한 변경이 불가능
원시 자료형을 변수에 할당할 경우, 값 자체의 복사가 일어난다
원시 자료형 또는 원시 자료형의 데이터를 함수의 전달인자로 전달할 경우, 값 자체의 복사가 일어난다

자바스크립트에서 원시 자료형이 아닌 모든 것은 참조 자료형. 배열([])과 객체({}), 함수(function(){})가 대표적

원시 자료형 '값'이 할당되고, arr에는 참조 자료형의 '주소'가 할당
영어 단어 reference 의미와 연결시켜보면 실제 데이터가 저장된 주소를 가리킨다(refer), 즉, 참조(reference)한다로 이해하면 쉽습니다.

왜 참조 자료형에서는 '주소'를 할당할 수 밖에 없을까?
원시 자료형은 immutable . 참조 자료형은, 그렇지 않다.

우리가 배열에 요소를 추가 및 삭제하고, 객체에 속성을 추가 및 삭제할 수 있었다.
이것 자체가, 참조 자료형은 이미 immutable하지 않다는 것을 보여주고 있다.
언제든 데이터가 늘어나고 줄어들 수 있죠 (동적으로 변한다.), 그렇기 때문에 특별한 저장공간의 주소를 변수에 할당함으로써 더 잘 관리하고자 한다.
이런 저장 공간을 heap이라고 부른다.

spread 문법은 기존 배열을 변경하지 않기 때문에 복사한 배열을 수정한다고 해서 원본이 함께 수정되지 않는다
배열이나 객체 비교할 떄는 주소를 비교한다고 생각

array.from
문자열안의 글자를 쪼개서 배열로 반환

주소를 할당하는 거기 때문에 복사해도 주소는 같다

배열 같은경우 slice
객체는 object.assign으로 주로 복사
spread syntax > [...arr]

배열과 객체만 얇은 복사(주소)가 된다고 생각하면 된다.

껍데기 벗기는게 스프레드
다시 만드는게 rest
함수에다가 주는거 rest
펼쳐서 하는거 spread
파라미터로 들어가면 그게 rest

arguments
키들만 모여서 배열로 만드는 거니까 arguments { } 해서 나온게 [] 로 변함
함수가 생성될때 자동으로 생성된 arguments 객체는
배열 메서드 하나도 사용 못한다
length 프로퍼티 빼고는 다른 배열꺼 못쓴다
Array. from > 배열로 만듦

...nums >> 전달인자 수 연연안해도 된다
전달인자 할당 안됐으면 undefined
...args에 아무것도 전달 안됐으면 빈 배열 [ ] 이 나온다.

profile
성장일지

0개의 댓글