[기술인터뷰] JavaScript - 데이터 타입과 타입 변환

🎈 데이터 타입은 왜 필요한가?

  1. 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  2. 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  3. 메모리에서 읽어 들인 2진수를 어떻게 해석할 지 결정하기 위해

💡 정적 타이핑이란?

변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언하는 것 (명시적 타입 선언)

// c 변수에는 1바이트 정수 타입의 값만을 할당할 수 있다.
char c;
// num 변수에는 4바이트 정수 타입의 값만을 할당할 수 있다.
int num;
  • 변수의 타입을 변경할 수 없다.
  • 변수에 선언한 타입에 맞는 값만 할당할 수 있다.
  • 컴파일 시점에서 타입 체크를 수행한다. (통과 못하면 에러 발생)
  • 대표적인 정저 타입 언어 : C, C++, Java 등

💡 동적 타이핑이란?

변수를 선언할 때 타입을 선언하지 않는 것

  • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. (타입 추론)
  • 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
  • 대표적인 동적 타입 언어 : JavaScript, Python, PHP 등

💡 명시적 타입 변환이란?

개발자가 의도적으로 값의 타입을 변환하는 것 ( = 타입 캐스팅)

var x = 10;

// 숫자를 문자열로 타입 캐스팅
var str = x.toString();
console.log(typeof str, str); // string 10

// x 변수의 값이 변경된 것은 아님
console.log(typeof x, x); // number 10

🎈 명시적 타입 변환 함수의 예

문자열이 아닌 값을 문자열 타입으로 변환하는 방법
1. String 생성자 함수를 new 연산자 없이 호출하는 방법

String(1);

2. Object.prototype.toString 메서드를 사용하는 방법

(1).toString();
  1. 문자열 연결 연산자를 이용하는 방법
1 + "";

숫자 타입이 아닌 값을 숫자 타입으로 변환하는 방법
1. Number 생성자 함수를 new 연산자 없이 호출하는 방법

Number("0")
  1. parseInt, parseFloat 함수를 사용하는 방법(문자열만 가능)
parseInt("0");
  1. + 단항 산술 연산자를 이용하는 방법
+"0";
  1. * 산술 연산자를 이용하는 방법
"0" * 1;

Boolean 타입이 아닌 값을 Boolean 타입으로 변환하는 방법
1. Boolean 생성자 함수를 new 연산자 없이 호출하는 방법

Boolean("x");
Boolean(0);
  1. !부정 논리 연산자를 두 번 사용하는 방법
!!"x";
!!0;

💡 암묵적 타입 변환이란?

개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것 ( = 강제 타입 변환)

var x = 10;

// 문자열 연결 연산자 (+)는 숫자 타입 x의 값을 바탕으로 새로운 문자열을 생성함
var str = x + "";
console.log(typeof str, str); // string 10

// x 변수의 값이 변경되는 것은 아님
console.log(typeof x, x); // number 10

🎈 truthy/falsy

자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy 값 또는 Falsy 값으로 구분한다.

  • flasy 값 (false로 평가됨)
false
undefined
null
0, -0
NaN
' '
  • Truthy 값 (Falsy값에 !를 붙인 것)
!false
!undefined
!null
!0, !-0
!NaN
!' '

좋은 웹페이지 즐겨찾기