개발자 성장 로드맵/프론트엔드

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라는 별도 프로젝트를 사용

  1. 아래 사이트 접속
    nvm-windows Releases
  2. nvm-setup.zip 파일 다운로드
  3. 설치 마법사 실행

설치 후:

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