JavaScript 핵심 팁 10가지 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
JavaScript 개발자(초보자 및 중급자), 프론트엔드 및 백엔드 개발자
핵심 요약
map()
과forEach()
의 차이점:map()
은 새 배열 반환,forEach()
는 사이드 이펙트 실행?.
연산자: 깊은 객체 프로퍼티 접근 시 런타임 오류 방지??
연산자: 0, false, ""과 같은 유효한 falsy 값 보존let
사용: 비동기 로직에서 블록 스코프를 활용한 변수 누수 방지
섹션별 세부 요약
1. `map()` vs `forEach()`
map()
은 원본 배열을 변환하여 새 배열 생성forEach()
는 원본 배열 변경 없이 사이드 이펙트 실행 (예: 로깅, 배열에 데이터 추가)- 예시:
numbers.map(num => num 2)
vsnumbers.forEach(num => forEachResult.push(num 2))
2. Optional Chaining `?.`
- 깊은 객체 프로퍼티 접근 시 null/undefined 체크 자동화
- 예시:
user?.address?.city
→user
가 null일 경우 예외 발생 없이 undefined 반환 - 보안성 향상 및 코드 간결성 유지
3. `??` Nullish Coalescing
0
,false
,""
과 같은 유효한 falsy 값 보존- 예시:
count ?? 10
→count
가0
일 경우 0 유지 (반면||
은10
반환)
4. Destructuring
- 객체/배열 구조 분해로 코드 간결성 향상
- 예시:
const { name, age } = person
→ props 또는 API 응답 처리 시 유용
5. `let` vs `var` in Loops
var
는 함수 스코프,let
은 블록 스코프- 비동기 로직 (예:
setTimeout
)에서let
사용 시 변수 누수 방지 - 예시:
for (let i = 0; i < 3; i++)
→i
는 각 반복에서 새로 생성
6. Unary `+` 연산자
- 문자열을 숫자로 변환하는 간결한 방법
- 예시:
+str
→"42"
→42
(반면parseInt
은 타입 체크 필요)
7. Spread Operator `{...obj}`
- 객체 얕은 복사로 불필요한 원본 변경 방지
- 예시:
const copy = { ...original }
→copy.name
변경 시 원본 객체 영향 없음
8. `filter()`
- 조건에 맞는 요소만 포함한 새 배열 생성
- 예시:
numbers.filter(n => n % 2 === 0)
→ 짝수만 필터링
9. `Object.keys()`로 빈 객체 검증
- API 응답, 폼 데이터, 설정 검증 시 활용
- 예시:
Object.keys(obj).length === 0
→ 빈 객체 판단
10. Default Parameters
- 함수 인자 기본값 설정으로 중복된
if
체크 제거 - 예시:
function greet(name = "Developer")
→ 명시적 파라미터 생략 시 기본값 사용
결론
map()
과forEach()
,?.
,??
등 핵심 패턴 활용 → 버그 감소 및 유지보수성 향상let
사용 → 비동기 로직에서의 변수 스코프 문제 해결filter()
와Object.keys()
는 데이터 검증 및 처리 효율성 극대화- 간결한 코드 작성과 런타임 오류 방지를 위해 이 팁들을 일상 개발에 적용하세요.