Programing/javascript

자바스크립트 실무 유틸 함수 시리즈

2025. 4. 29. 09:29
반응형

실제 개발 현장에서는 작은 유틸리티 함수 하나가 프로젝트 유지보수성과 개발 생산성을 크게 향상시킵니다. 자바스크립트 실무에서 자주 사용하는 핵심 유틸 함수들을 정리해보겠습니다.

이 시리즈는 초보자뿐 아니라 중급 개발자에게도 바로 도움이 될 수 있도록, 기본 사용법 + 고급 활용법까지 함께 다룹니다.


✅ 1. deepClone (깊은 복사)

📌 기본 버전

function deepClone(obj) {
  return JSON.parse(JSON.stringify(obj));
}

📌 한계

  • undefined, function, Symbol 타입은 누락
  • 순환 참조가 있는 경우 오류 발생

📌 개선된 버전 (lodash 스타일)

function deepClone(obj, hash = new WeakMap()) {
  if (Object(obj) !== obj) return obj;
  if (hash.has(obj)) return hash.get(obj);

  const result = Array.isArray(obj) ? [] : {};
  hash.set(obj, result);

  for (const key in obj) {
    result[key] = deepClone(obj[key], hash);
  }
  return result;
}

✅ 2. debounce (디바운스)

📌 입력 지연 처리

function debounce(fn, delay) {
  let timer;
  return function (...args) {
    clearTimeout(timer);
    timer = setTimeout(() => fn.apply(this, args), delay);
  };
}

📌 활용 예시

  • 검색창 입력시 서버 요청 최적화
  • 창 크기 조절 이벤트 처리

✅ 3. throttle (스로틀)

📌 주기적 호출 제한

function throttle(fn, limit) {
  let waiting = false;
  return function (...args) {
    if (!waiting) {
      fn.apply(this, args);
      waiting = true;
      setTimeout(() => waiting = false, limit);
    }
  };
}

📌 활용 예시

  • 스크롤 이벤트 최적화
  • 드래그 이벤트 제어

✅ 4. formatDate (날짜 포맷 변환)

📌 간단한 포맷 변환

function formatDate(date) {
  const d = new Date(date);
  const year = d.getFullYear();
  const month = String(d.getMonth() + 1).padStart(2, '0');
  const day = String(d.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}

📌 고급 사용 예

  • 사용자 지정 포맷 (YYYY/MM/DD, MM-DD-YYYY 등)

✅ 5. copyToClipboard (클립보드 복사)

📌 간단한 복사 기능

function copyToClipboard(text) {
  navigator.clipboard.writeText(text).then(() => {
    console.log('복사 완료');
  }).catch(err => {
    console.error('복사 실패', err);
  });
}

📌 활용 예시

  • 링크 복사 버튼
  • 초대 코드 복사 기능

✅ 결론

실무에서는 작은 작업 하나라도 반복적이면 유틸 함수를 활용해 관리하는 것이 개발 생산성을 높이는 핵심입니다. 위에 소개한 함수들은 프로젝트 초기 셋업에 기본 탑재해두면 유지보수가 훨씬 쉬워집니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 실무 유틸 함수 시리즈 5 - 숫자와 통계 처리  (0) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈 4 - 문자열 조작  (1) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈 3  (0) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈 2  (0) 2025.04.29
DOM 조작 vs Virtual DOM (React 비교 포함) 정리  (0) 2025.04.29
JSON.stringify vs JSON.parse 제대로 이해하기  (0) 2025.04.29
fetch로 REST API 호출하기: 기본 사용법, 응답 처리, 에러 처리까지  (0) 2025.04.29
자바스크립트 Date 객체 소개, 예제, 그리고 심화 활용법  (1) 2025.04.24
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 실무 유틸 함수 시리즈 3
  • 자바스크립트 실무 유틸 함수 시리즈 2
  • DOM 조작 vs Virtual DOM (React 비교 포함) 정리
  • JSON.stringify vs JSON.parse 제대로 이해하기
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    사고 싶은 책
    It
    자바스크립트
    디자인패턴
    IT·컴퓨터
    IT 관련
    자바
    iT's MY LiFE
    js패턴
    위시리스트
    자바스크립트유틸
    JavaScript
    IT블로그
    jsp
    블로그
    SQL
    Java
    기초
    읽고 싶은 책
    php
Dongkkase
자바스크립트 실무 유틸 함수 시리즈
상단으로

티스토리툴바