개발자 성장 로드맵/프론트엔드
nvm 설치와 자바스크립트 얕은 복사 vs 깊은 복사 완전 정리
프로잉2
2025. 7. 11. 19:56
728x90
✅ nvm (Node Version Manager) 설치
nvm 이란?
- 여러 버전의 Node.js를 손쉽게 설치·전환할 수 있는 도구
- Node.js 프로젝트마다 다른 버전 쓰는 경우 필수
- macOS, Linux, Windows 모두 사용 가능
✅ macOS / Linux 설치
터미널에서 아래 명령어 실행:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
설치 후 쉘 설정파일 추가:
- . bashrc
- . zshrc
- . profile
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
터미널 재시작 후 버전 확인:
nvm --version
✅ Windows 설치
Windows는 nvm-windows라는 별도 프로젝트를 사용
- 아래 사이트 접속
→ nvm-windows Releases - nvm-setup.zip 파일 다운로드
- 설치 마법사 실행
설치 후:
nvm list available
원하는 버전 설치:
nvm install 18.17.0
nvm use 18.17.0
✅ 비유
- nvm = “여러 버전의 Node.js 신발장”
- 프로젝트마다 딱 맞는 버전의 신발(노드 버전) 꺼내 신으면 된다!
✅ 얕은 복사 vs 깊은 복사
✅ 얕은 복사 (Shallow Copy)
- 객체나 배열을 복사할 때 주소(reference)만 복사
- 내부 값은 여전히 같은 메모리를 가리킴
- 복사본 수정 → 원본도 영향받음
예시
const original = { name: "Alice" };
const copy = original;
copy.name = "Bob";
console.log(original.name); // Bob
✅ 깊은 복사 (Deep Copy)
- 객체 내부 값까지 모두 새로 복사
- 복사본과 원본이 완전히 분리됨
깊은 복사 방법
JSON 방법 (간단하지만 한계 존재)
const original = { name: "Alice" };
const copy = JSON.parse(JSON.stringify(original));
copy.name = "Bob";
console.log(original.name); // Alice
- 단점:
- 함수, undefined, Symbol은 복사 안됨
structuredClone (ES2021)
const original = { name: "Alice" };
const copy = structuredClone(original);
copy.name = "Bob";
console.log(original.name); // Alice
lodash cloneDeep
import cloneDeep from "lodash/cloneDeep";
const original = { name: "Alice" };
const copy = cloneDeep(original);
copy.name = "Bob";
console.log(original.name); // Alice
✅ 비유
- 얕은 복사 → “복사본도 같은 집 주소에 살고 있음”
- 깊은 복사 → “복사본은 새 집에 이사 간 것”
✅ 정리
- nvm은 Node.js 버전 관리 필수 도구
- Windows는 nvm-windows 설치 필요
- 얕은 복사(shallow copy)는 reference만 복사 → 원본과 연결
- 깊은 복사(deep copy)는 새로운 객체 생성 → 완전히 분리
728x90