2-6 형 변환

bi_sz·2020년 4월 21일
1

JavaScript

목록 보기
9/22
post-custom-banner

1. 형 변환

함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환된다.
이런 과정을 " 형 변환 ( type conversion ) " 이라고 한다.

예시

  • alert가 전달받은 값의 자료형과 관계없이 이를 문자열로 자동 변환하여 보여주는 경우
  • 수학 관련 연산자가 전달받은 값을 숫자로 변환하는 경우
  • 전달받은 값을 의도를 갖고 원하는 타입으로 변환 ( 명시적 변환 ) 해 주는 경우

2. 문자형으로 변환

alert 메서드는 매개변수로 문자형을 받기 때문에, alert ( value ) 에서 value는 문자형이어야 한다.
다른 형의 값을 전달받으면 이 값은 문자형으로 자동 변환된다.

String ( value ) 함수를 호출해 전달받은 값을 문자열로 변환 할 수도 있다.

let value = true;
alert(typeof value);   // boolean
value = String(value); // 변수 value에는 문자열 "true"가 저장된다
alert(typeof value);   // string

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

3. 숫자형으로 변환

숫자형으로의 변환은 수학과 관련된 함수와 표현식에서 자동으로 일어난다.

숫자형이 아닌 값에 나누기 [ / ] 를 적용한 경우

alert( "6" / "2" ); // 3 - 문자열이 숫자형으로 자동변환된 후 연산 수행

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

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

문자 기반 폼 ( form ) 을 통해 입력받는 경우에는 ,명시적 형 변환이 필수이다.


숫자 이외의 글자가 들어가 있는 문자열을 숫자형으로 변환하려고 하면 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

null 과 undefined 은 숫자형으로 변환 시 결과가 다르다.
null 은 0이 되고 undefined 는 NaN 이 된다.

대부분의 수학 연산은 형 변환을 수반한다.

4. 불린형으로 변환

논리 연산을 수행할 때 발생한다.
Boolean ( value ) 를 호출하면 명시적으로 불리언으로의 형 변환을 수행할 수 있다.

불린형으로 변환 시 적용되는 규칙

  • 숫자 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 이다.

PHP 등의 일부 언어에선 문자열 " 0 " 을 false로 취급한다.
자바스크립트에선 비어 있지 않은 문자열은 true 이다.

본문 : https://ko.javascript.info/type-conversions

profile
https://li-yo.tistory.com/ 티스토리 블로그 이전 하였습니다.
post-custom-banner

0개의 댓글