Javascript 형변환

김원호·2022년 7월 16일
0

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개의 댓글