Javascript 형변환

김원호·2022년 7월 16일

JavaScript 형변환(Type Casting)

자바스크립트는 타입이 매우 유연한 언어이다. 때문에 자바스크립트 엔진이 필요에 따라 암시적변환을 혹은 개발자의 의도에 따라 명시적변환을 실행한다.
함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동변환되는 것

/*
* 개발자에 의해 의도적으로 값의 타입을 변환하는 것을 **명시적 타입 변환(Explicit coercion) 또는 타입 캐스팅(Type casting)**이라 한다.
* 동적 타입 언어인 자바스크립트는 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 **암묵적 타입 변환(Implicit coercion) 또는 타입 강제 변환(Type coercion)**이라고 한다.
*/

문자형으로 변환

  • 문자형의 값이 필요할 때 일어납니다
  let value = true;
  alert(typeof value); // boolean
  value = String(value); // 변수 value엔 문자열 "true"가 저장됩니다.
  alert(typeof value); // string

false는 문자열 "false"로, null은 문자열 "null"로 변환되는 것과 같이, 문자형으로의 변환은 대부분 예측 가능한 방식으로 일어납니다.

숫자형으로 변환

  • 수학과 관련된 함수와 표현식에서 자동으로 일어납니다
	alert( "6" / "2" ); // 3, 문자열이 숫자형으로 자동변환된 후 연산이 수행됩니다.

Number(value) 함수를 사용하면 주어진 값(value)을 숫자형으로 명시해서 변환할 수 있습니다.

  let str = "123";
  alert(typeof str); // string
  let num = Number(str); // 문자열 "123"이 숫자 123으로 변환됩니다.
  alert(typeof num); // number

숫자 이외의 글자가 들어가 있는 문자열을 숫자형으로 변환하려고 하면, 그 결과는 NaN이 됩니다.

  let age = Number("임의의 문자열 123");
  alert(age); // NaN, 형 변환이 실패합니다.

숫자형으로 변환 시 적용되는 규칙


예시:

  alert( Number("   123   ") ); // 123
  alert( Number("123z") );      // NaN ("z"를 숫자로 변환하는 데 실패함)
  alert( Number(true) );        // 1
  alert( Number(false) );       // 0
  • nullundefined은 숫자형으로 변환 시 결과가 다르다는 점에 유의하시기 바랍니다. null0이 되고 undefinedNaN이 됩니다.

불린형으로 변환

  • 논리 연산을 수행할 때 발생
    • 숫자 0, 빈 문자열, null, undefined, NaN과 같이 직관적으로도 “비어있다고” 느껴지는 값들은 false가 됩니다.
    • 그외의 값은 true로 변환됩니다.
alert( Boolean(1) ); // 숫자 1(true)
alert( Boolean(0) ); // 숫자 0(false)

alert( Boolean("hello") ); // 문자열(true)
alert( Boolean("") ); // 빈 문자열(false)
  • 문자열 "0"은 true입니다. 자바스크립트에선 비어있지 않은 문자열은 언제나 true입니다.
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // 공백이 있는 문자열도 비어있지 않은 문자열이기 때문에 true로 변환됩니다.

요약

profile
당신은사랑받기위해태어난사람

0개의 댓글