자바스크립트 데이터 타입

YangJiWon·2020년 8월 17일
0

정적 타입 언어

  • 변수에 타입이 있는 언어
  • C나 java 등의 프로그래밍 언어에는 정수 타입 변수, 부동소수점 타입 변수 등이 존재
int a;

동적 타입 언어

  • 같은 변수에 숫자나 문자열과 같은 다양한 타입의 데이터를 대입할 수 있는 타입 언어
  • 실행할 때 변수에 저장된 데이터 타입을 동적으로 바꿀 수 있는 언어
var pi = 3.14;
console.log(pi); // -> 3.14
pi = "원주율";
console.log(pi); // -> 원주율

데이터 타입의 분류

  • JS가 처리할 수 있는 데이터 타입은 크게 원시 타입과 객체 타입으로 나눌 수 있습니다.

원시 타입

  • 원시 타입에 속하는 값에는 숫자, 문자열, 문자열, 논리값이 있습니다.
  • 원시 타입 데이터는 데이터를 구성하는 가장 기본적인 요소로 불변 값으로 정의되어 있습니다.

객체 타입

  • 원시 타입에 속하지 않는 자바스크립트의 값은 객체라고 합니다.
  • 객체는 변수 여러 개가 모여서 만들어진 복합 데이터 타입입니다.
  • 객체는 참조 타입이라 객체 타입의 값을 변수에 대입하면 변수에는 그 객체에 대한 참조가 할당됩니다.
  • 자바스크립트에서는 배열, 함수, 정규 표현식과 같은 다양한 요소가 객체입니다.

특수한 값

분류표기법설명
전역 변수Infinity플러스 무한대
전역 변수NaN부정 값(Not a Number)
Number의 프로퍼티Number.POSITIVE_INFINITY플러스 무한대
Number의 프로퍼티Number.NEGATIVE_INFINITY마이너스 무한대
Number의 프로퍼티Number.MAX_VALUE표현할 수 있는 최댓값(약 1.8 x 10^308)
Number의 프로퍼티Number.MIN_VALUE표현할 수 있는 최솟값(약 4.9 x 10^-324)
Number의 프로퍼티Number.NaN부정 값 (Not a Number)
Number의 프로퍼티Number.EPSILON2.22...1e-16
Number의 프로퍼티Number.MIN_SAFE_INTEGER-9007199254740990
Number의 프로퍼티Number.MAX_SAFE_INTEGER9007199254740990
  • NaN은 0을 0으로 나눈 결괏괎, Infinity를 Infinit로 나눈 결괏값, 음수의 제곱근 등 숫자로 표현할 수 없는 부정 값을 뜻합니다.

값이 없음

  • 값이 없을을 표현하기 위한 특수한 값에는 null과 undefined가 있습니다.

undefined

  • 값을 아직 할당하지 않은 변수의 값
  • 없는 객체의 프로퍼티를 읽으려고 시도했을 때의 값
  • 없는 배열의 요소를 읽으려고 시도했을 때의 값
  • 아무것도 반환하지 않는 함수가 반환하는 값
  • 함수를 호출했을 때 전달받지 못한 인수의 값

null

  • 아무것도 없음을 값으로 표현한 리터럴입니다.
  • null은 주로 프로그램에서 무언가를 검색했지만 찾지 못했을 때 아무것도 없을 전달하기 위한 값을 사용됩니다.
  • 값을 읽을 때 값이 null인지 아닌지 확인해야 하는 상황이 자주 발생합니다.

심벌

  • 심벌은 ECMAScript 6부터 새롭게 추가된 원시 값입니다. 심벌은 자기 자신을 제외한 그 어떤 값과 다른 유일무이한 값입니다.
var sym1 = Symbol();
var sym2 = Symbol();
console.log(sym1 == sym2); // -> False
var Heart = Symbol("하트");
console.log(Heart.toString()); // -> Symbol(하트)

심벌과 문자열 연결하기

  • Symbol.for()를 활용하면 문자열과 연결된 심벌을 생성할 수 있습니다.
var sym1 = Symbol.for("club");
var sym2 = Symbol.for("club");
console.log(sym1 == sym2); // -> true

var sym1 = Symbol.for("club");
var sym2 = Symbol("club");
console.log(Symbol.keyFor(sym1)); // -> club
console.log(Symbol.keyFor(sym2)); // -> undefined
  • Symbol.for는 전역 레지스트리에 심벌을 만듭니다. 또한, 전역 레지스트리에서 그 심벌을 위에 지정한 문자열로 불러올 수 있습니다.

보간 표현식

  • 템플릿 리터럴 안에는 플레이스 홀더를 넣을 수 있습니다. 플레스 홀더는 ${...}로 표기합니다.
  • 자바스크립트 엔진은 플레이스 홀더 안에 든 ... 부분을 표현식으로 간주하여 평가(Evalution)합니다.
var a = 2, b = 3;
console.log(`${a}, + ${b} = ${a+b}`) // -> 2 + 3 = 5
var now = new Date();
console.log(`오늘은 ${now.getMonth()+1} 월 ${now.getDate()} 일입니다.`); // -> 오늘은 8월 1일입니다.
  • 모든 코드에서 ${}안에 든 표현식이 평가되어 문자열로 바뀌었다는 사실을 확인할 수 있습니다.

플레이스 홀더
플레이스 홀더는 실제 내용물을 나중에 삽입할 수 있도록 일단 확보한 장소라는 뜻으로 쓰입니다. 프로그래밍 언어에서 플레이스 홀더는 사용자의 입력 값처럼 실행 시점에 외부에서 주어지는 값을 표현식에 반영하고자 할 때 , 그것이 들어갈 수 있도록 마련한 장소를 뜻합니다.

profile
데이터데이터데이터!!

0개의 댓글