자바스크립트에서 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)
얕은 복사
- 값이 저장된 메모리의 주소를 복사 한 것으로 참조만 한다고 보면 된다.
얕은 복사를 한 뒤에 변수를 재사용해서 수정하게 되면 원본값도 동시에 변경된다.
깊은 복사
- 새로운 메모리 공간에 완전히 복사 한 것으로 내부 값이 그대로 복사된다.
값을 복사를 한 것이기 때문에 변수를 재사용하여 수정하여도 원본값에는 영향을 미치지 않는다.
var, let, const 를 중복 선언 허용, 스코프, 호이스팅 관점에서 서로 비교
호이스팅은 끌어올리다 라는 뜻으로 자바스크립트에서의 선언이 상단으로 끌어 올려지는 것을 의미한다.
함수 호출 부분이 위에, 함수는 아래에 있어도 호이스팅으로 끌어올려서 실행이 된다.
var, let, const 모두 호이스팅이 되는 부분은 동일하다.
var는 선언과 동시에 undefuned로초기화가 되기 때문에, 선언보다 먼저 변수를 사용하더라도 오류가 발생되지 않는다.
let과 const는 호이스팅 특징에 영향을 받지 않기에 값이 초기화 되기 전에 먼저 사용이 불가하다.
호이스팅의 단점은 전역변수와 함수내 동일 변수가 존재하는 경우 예측이 어려워 오류를 발생시킬 가능성이 높아지기 때문에 var는 사용하지 않는 편이 좋다.
또한 스코프는 범위를 의미하는데, var는 전역번위와 함수 내에서도 사용할 수 있다.
호이스팅이 되면서 자동으로 초기화가 되는 문제가 있다.
var와 let은 재선언이 가능한 반면 let은 블록 범위내에서 접근이 가능하다.
const 역시 블록 범위 내에서만 접근이 되며, 재선언 및 업데이트가 불가하다.
'💻 더 나은 개발자 되기 > javascript' 카테고리의 다른 글
HTTP 메소드 (0) | 2024.01.28 |
---|---|
이벤트 버블링, 캡쳐링, 위임 (1) | 2024.01.28 |