함정에 빠지기 쉬운 자바스크립트 문법7

2025. 5. 5. 08:19·Programing/javascript
반응형

자바스크립트는 다양한 기능을 제공하면서도 그만큼 함정도 많은 언어입니다. 이번 7탄에서는 비교적 흔하지만 간과되기 쉬운 동작들, 그리고 예기치 않게 발생하는 오류를 유발하는 문법 사례들을 다룹니다.


✅ 1. Boolean([])과 [] == false는 다른 결과를 가진다

📌 문제 상황

Boolean([]);     // true
[] == false;      // true

📌 설명

  • Boolean([])는 명시적 변환으로 truthy
  • [] == false는 암묵적 형 변환으로 문자열/숫자 변환을 거쳐 true

📌 대처

논리 연산과 비교 연산이 다르게 평가된다는 점을 이해하고, 비교 연산에는 항상 === 사용을 권장합니다.


✅ 2. typeof function() {}와 typeof class {}는 다르다

📌 문제 상황

typeof function() {}; // "function"
typeof class {};       // "function"

📌 설명

둘 다 "function"을 반환하지만, 클래스는 내부적으로 constructor 함수로 정의되며, 함수와 다르게 호출할 수 없습니다.

📌 대처

클래스는 new 키워드로만 호출 가능하다는 점에 유의해야 하며, 함수와 클래스의 의도적 차이를 인식하고 사용해야 합니다.


✅ 3. forEach는 break, return으로 반복을 중단할 수 없다

📌 문제 상황

[1, 2, 3].forEach((item) => {
  if (item === 2) return; // 현재 반복만 건너뜀
  console.log(item);
});

📌 설명

forEach는 중간에 빠져나올 수 없는 메서드입니다. return은 해당 콜백 함수에서만 작동합니다.

📌 대처

조건부 반복 제어가 필요한 경우 for, for...of, some, every 등을 활용합니다.


✅ 4. delete는 객체 프로퍼티에만 사용해야 한다

📌 문제 상황

let x = 1;
delete x; // false

📌 설명

전역 스코프에서 var, let, const로 선언한 변수는 delete로 제거되지 않습니다. 객체 프로퍼티에만 사용 가능합니다.

📌 대처

변수 삭제가 아닌 값 재할당이나 블록 스코프의 활용이 필요합니다.


✅ 5. switch 문에서 break를 빠뜨리면 fallthrough 발생

📌 문제 상황

let x = 2;
switch (x) {
  case 1:
    console.log("One");
  case 2:
    console.log("Two");
  case 3:
    console.log("Three");
}
// 출력: "Two", "Three"

📌 설명

break를 명시하지 않으면 다음 case로 계속 실행됩니다.

📌 대처

각 case 블록 마지막에 반드시 break를 추가하거나, 의도적 fallthrough임을 주석으로 명시합니다.


✅ 결론

이번 편에서는 비교적 자주 사용되는 기능 속의 함정을 조명했습니다. 논리 평가, 클래스 구문, 반복 제어, delete 키워드, switch 문 등 자주 사용되지만 실수하기 쉬운 코드 패턴을 숙지하는 것은 자바스크립트 실력을 한 단계 끌어올리는 데 도움이 됩니다.

반응형

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

함정에 빠지기 쉬운 자바스크립트 문법11  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법10  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법9  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법8  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법6  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법5  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법4  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법3  (0) 2025.05.05
'Programing/javascript' 카테고리의 다른 글
  • 함정에 빠지기 쉬운 자바스크립트 문법9
  • 함정에 빠지기 쉬운 자바스크립트 문법8
  • 함정에 빠지기 쉬운 자바스크립트 문법6
  • 함정에 빠지기 쉬운 자바스크립트 문법5
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (446) N
      • 금융 (61) N
      • Programing (271) N
        • Algorithm (30) N
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (36)
        • Book (17)
        • 제품 (1)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31) N
        • 회고 (2) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    IT·컴퓨터
    블로그
    위시리스트
    iT's MY LiFE
    자바스크립트유틸
    php
    읽고 싶은 책
    IT블로그
    기초
    SQL
    Java
    It
    jsp
    사고 싶은 책
    js패턴
    디자인패턴
    JavaScript
    IT 관련
    자바
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
함정에 빠지기 쉬운 자바스크립트 문법7
상단으로

티스토리툴바