Programing/javascript

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

2025. 5. 5. 07:50
반응형

자바스크립트는 유연하고 관대한 문법 특성 덕분에 초보자에게 진입 장벽이 낮은 언어입니다. 하지만 이로 인해 실수하거나 오해하기 쉬운 문법들도 많습니다. 이 글에서는 실무에서 자주 마주치지만, 주의하지 않으면 버그로 이어질 수 있는 자바스크립트 문법 사례들을 소개합니다.


✅ 1. == vs === (느슨한 비교와 엄격한 비교)

📌 문제 상황

0 == false    // true
0 === false   // false
null == undefined  // true
null === undefined // false

📌 해결 방법

항상 ===를 사용하여 타입까지 비교하도록 습관을 들이는 것이 좋습니다.


✅ 2. typeof null은 왜 "object"인가?

📌 문제 상황

typeof null; // "object"

📌 원인

자바스크립트 초기 설계 실수로, null은 객체가 아님에도 불구하고 "object"로 판단됩니다.

📌 대처

null인지 체크할 때는 value === null을 사용합니다.


✅ 3. Array.prototype.length와 빈 요소

📌 문제 상황

const arr = [1, 2, 3];
arr[10] = 99;
console.log(arr.length); // 11
console.log(arr); // [1, 2, 3, <7 empty items>, 99]

📌 설명

배열에 특정 인덱스를 직접 할당하면 그 이전 인덱스는 비어 있는 상태로 존재하게 됩니다.

📌 대처

배열 조작은 push, splice 등을 활용하고, 명시적 인덱스 지정은 주의해서 사용해야 합니다.


✅ 4. NaN !== NaN인 이유

📌 문제 상황

NaN === NaN; // false

📌 원인

IEEE 754 부동소수점 표준에 따라 NaN은 자기 자신과도 같지 않은 유일한 값입니다.

📌 해결 방법

Number.isNaN(value)를 사용하여 NaN 여부를 확인합니다.


✅ 5. setTimeout 루프의 함정

📌 문제 상황

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 100);
}
// 출력: 3, 3, 3

📌 원인

var는 함수 스코프이기 때문에 루프가 끝난 뒤의 값이 출력됩니다.

📌 해결 방법

let을 사용하거나, IIFE를 사용하여 클로저로 변수 값을 고정합니다.

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 100);
}

✅ 결론

자바스크립트는 관대한 문법 덕분에 실수가 발생하기 쉽습니다. 본 글에서 다룬 대표적인 함정들을 숙지해 두면, 실무에서 발생할 수 있는 예기치 않은 동작을 미연에 방지할 수 있습니다.

반응형

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

함정에 빠지기 쉬운 자바스크립트 문법5  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법4  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법3  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법2  (0) 2025.05.05
자바스크립트 실무 유틸 함수 시리즈 24 - 접근성 향상을 위한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 23 - 브라우저 환경 감지 및 대응 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 22 - URL 및 쿼리 파라미터 처리 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 21 - 정규 표현식을 활용한 유틸  (0) 2025.05.01
'Programing/javascript' 카테고리의 다른 글
  • 함정에 빠지기 쉬운 자바스크립트 문법3
  • 함정에 빠지기 쉬운 자바스크립트 문법2
  • 자바스크립트 실무 유틸 함수 시리즈 24 - 접근성 향상을 위한 유틸
  • 자바스크립트 실무 유틸 함수 시리즈 23 - 브라우저 환경 감지 및 대응 유틸
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)
  • 인기 글

  • 최근 댓글

  • 태그

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

티스토리툴바