JavaScript 2.7

1 minute read

형변환

  • 함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환된다.
    • 이러한 과정을 형 변환이라고 한다.
  • 전달받은 값을 의도를 가지고 원하는 타입으로 변환해주는 경우도 형 변환이라고 할 수 있다.

문자형으로 변환

  • 문자형의 값이 필요할 때 일어난다.
  • Alert 메서드는 매개변수로 문자형을 받기 때문에 alert(value)에서 value는 문자형이어야 한다.
  • 만약 다른 형의 값을 전달받으면 이 값은 문자형으로 자동 변환된다.
  • String(value) 함수를 호출해 전달받은 값을 문자열로 변환할 수도 있다.
let value = true;
alert(typeof value); // boolean

value = String(value); // 변수 value엔 문자열 "true"가 저장됩니다.
alert(typeof value); // string

숫자형으로 변환

  • 수학과 관련된 함수와 표현식에서 자동으로 일어난다.
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이 된다.

  • 숫자형으로 변환 시 적용되는 규칙
    • Undefined -> NaN
    • null -> 0
    • True and false -> 1 과 0
    • String -> 문자열의 처음과 끝 공백에 제거되고 공백 제거 후 남아있는 문자열이 없다면 0, 그렇지 않다면 문자열에서 숫자를 읽는다. 변환에 실패하면 NaN이 된다.
alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN ("z"를 숫자로 변환하는 데 실패함)
alert( Number(true) );        // 1
alert( Number(false) );       // 0

불린형으로 변환

  • 논리 연산을 수행할 때 발생된다.
  • Boolean(value)를 호출하면 명시적으로 불리언으로의 형 변환을 수행할 수 있다.
  • 적용되는 규칙
    • 숫자 0, 빈 문자열, null, undefined, NaN과 같이 직관적으로도 비어있다고 느껴지는 값들은 false가 된다.
    • 그 외의 값은 true로 변환된다.
  • 문자열 0은 true이다.
  • 공백이 있는 문자열도 비어있지 않은 문자열이기 때문에 true이다.