답변

자바스크립트는 동적 타입 언어로, 변수의 타입이 실행 중에 변경될 수 있습니다.
원시 타입과 참조 타입이 있으며, 필요에 따라 JS 엔진이 타입을 자동으로 변환하는 타입 강제(Type Coercion)가 발생합니다.
- 원시 타입: String, Number, BigInt, Boolean, undefined, null, Symbol
- 참조 타입: Object, Array, Function 등
타입 변환은 암묵적(자동) 또는 명시적(개발자가 직접)으로 발생할 수 있으며, 비교 연산 시 주의가 필요합니다.

키워드 설명

  • 암묵적 타입 변환(Implicit Coercion): JS 엔진이 자동으로 타입을 변환
"5" + 3 // "53 
// -> +연산자는 덧셈과 문자열연결 2가지 역할을 함
// ->피연산자 중 하나가 문자열이면, JS는 다른 피연산자도 문자열로 자동 변환해서 연결

"5" - 3 // 2
// -> -연산자는 덧셈이 아닌 산술 연산
// -> JS는 산술 연산을 수행하기 위해 피연산자를 숫자형으로 자동 변환
// -, *, /, % 같은 산술 연산자는 항상 숫자형 연산을 수행하므로 문자열을 숫자로 변환
true + 1 // 2
  • 명시적 타입 변환(Explicit Coercion): 개발자가 직접 변환
Number("123")
String(123)
Boolean(0)
parseInt("42px")
  • Falsy 값: 0 , "" , null , undefined , NaN , false
  • Truthy 값: 나머지 모든 값
  • === vs ==: === 는 타입까지 비교, == 는 타입 변환 후 비교

꼬리질문

  1. 0 == “0” 과 0 === "0" 의 결과 차이는 무엇인가요?
    • 0 == "0" → true (문자열 “0”이 숫자 0으로 변환됨)
      • == 연산 시, 한쪽이 숫자이고, 다른 쪽이 문자열이면, 문자열을 숫자로 변환
    • 0 === "0" → false (타입이 다름)
  2. null == undefined 와 null === undefined 의 결과는 무엇인가요?
    • null == undefined → true (암묵적 타입 변환)
      • JS 사양에 정의되어 있는 규칙
    • null === undefined → false (타입이 다름)
  3. Boolean 변환 시 falsy 값과 truthy 값을 예시로 들어보세요.
    • falsy: 0, "", null, undefined, NaN, false
    • truthy: "hello", 1, [], {}, function(){}
  4. 타입 변환에서 주의할 점은 무엇인가요?
    • 암묵적 타입 변환은 예기치 않은 결과를 초래할 수 있으므로, 비교 시 === 사용을 권장하며, 명시적 변환을 통해 의도를 명확히 하는 것이 좋습니다.

+ Recent posts