Programing/javascript

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

2025. 5. 5. 09:39
반응형

이번 8편에서는 자바스크립트 문법 중에서 한눈에 보기에는 명확하지만, 실제 실행 결과는 의외인 사례들을 다룹니다. 이러한 사례들은 코드 리뷰나 디버깅 과정에서도 자주 혼란을 야기하므로 미리 숙지해두면 큰 도움이 됩니다.

✅ 1. null >= 0은 true다

📌 문제 상황

null >= 0; // true
null > 0;  // false

📌 설명

  • null >= 0 → Number(null) >= 0 → 0 >= 0 → true
  • null > 0 → Number(null) > 0 → 0 > 0 → false

📌 대처

비교 연산에서 null, undefined와 같은 특수 값을 비교할 때는 명시적인 체크가 필요합니다.


✅ 2. setTimeout 안에서 this는 다르게 작동함

📌 문제 상황

const obj = {
  name: 'test',
  run: function () {
    setTimeout(function () {
      console.log(this.name); // undefined
    }, 100);
  }
};
obj.run();

📌 설명

setTimeout 내의 this는 전역 객체(window 또는 undefined)이며, obj와 무관합니다.

📌 대처

화살표 함수 또는 .bind(this)를 사용하여 의도한 컨텍스트 유지


✅ 3. +[]는 0이다

📌 문제 상황

console.log(+[]); // 0

📌 설명

  • []는 ""로 변환
  • +""는 0으로 변환됨

📌 대처

암묵적 형변환이 포함된 연산은 명시적 형변환(Number())으로 대체하여 가독성을 높입니다.


✅ 4. typeof Symbol() === "symbol"이지만, typeof Symbol === "function"

📌 문제 상황

typeof Symbol(); // 'symbol'
typeof Symbol;   // 'function'

📌 설명

Symbol은 생성자 함수이고, 호출 시 반환하는 값은 symbol 타입입니다. 이 둘을 혼동하면 의도와 다른 타입 체크 오류가 발생할 수 있습니다.


✅ 5. Array(3)과 Array.of(3)은 다르다

📌 문제 상황

Array(3);     // [ <3 empty items> ]
Array.of(3);  // [3]

📌 설명

  • Array(n)은 n개의 빈 슬롯을 가진 배열 생성
  • Array.of(n)은 단일 요소 n을 포함한 배열 생성

📌 대처

초기화된 배열을 원한다면 Array.of 또는 .fill()을 사용하는 것이 더 안전합니다.


✅ 결론

이번 편에서도 자바스크립트의 의외성과 관련된 문법을 중점적으로 살펴보았습니다. 특히 비교 연산, this 바인딩, 타입 변환 등의 사례는 초보자뿐만 아니라 숙련된 개발자에게도 혼란을 줄 수 있으므로 반복 학습이 필요합니다.

반응형

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

함정에 빠지기 쉬운 자바스크립트 문법12  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법11  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법10  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법9  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법7  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법6  (0) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법5  (1) 2025.05.05
함정에 빠지기 쉬운 자바스크립트 문법4  (0) 2025.05.05
'Programing/javascript' 카테고리의 다른 글
  • 함정에 빠지기 쉬운 자바스크립트 문법10
  • 함정에 빠지기 쉬운 자바스크립트 문법9
  • 함정에 빠지기 쉬운 자바스크립트 문법7
  • 함정에 빠지기 쉬운 자바스크립트 문법6
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)
  • 인기 글

  • 최근 댓글

  • 태그

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

티스토리툴바