데이터 타입

heejung·2022년 3월 15일
0

deep dive

목록 보기
4/20

자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.
원시 타입과 객체 타입으로 분류할 수 있다.

 원시 타입객체 타입
Number객체, 함수, 배열 등
String
Boolean
undefined
null
Symbol

숫자 타입


  • 하나의 숫자 타입만 존재
  • 모두 실수로 처리

2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않으므로, 이 값들을 참조하면 모두 10진수로 해석된다.

var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수

console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal) // true
console.log(octal === hex) // true

정수로 표현되는 것도 사실은 실수이므로, 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.

console.log(1 === 1.0) // true
console.log(4 / 2) // 2
console.log(3 / 2) // 1.5

세 가지 특별한 값도 표현할 수 있다.

  • Infinity : 양의 무한대
  • -Infinity : 음의 무한대
  • NaN : 산술 연산 불가

문자열 타입


  • 0개 이상의 16비트 유니코드 문자의 집합으로 전 세계 대부분의 문자를 표현
  • 작은따옴표(''), 큰따옴표(""), 백틱(``)으로 표기
var string;
string = '문자열';
string = "문자열";
string = `문자열`;

템플릿 리터럴


  • ES6부터 도입된 새로운 문자열 표기법
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등을 제공
  • 백틱(``)을 사용하여 표기

멀티라인 문자열

var template = `<ul>
	<li><a href="#">Home</a></li>
<ul>`;

console.log(template);

/* 출력 결과

   <ul>
	  <li><a href="#">Home</a></li>
   </ul>

*/

표현식 삽입

${ }로 표현식을 감싼다.
이 때 표현식의 평가 결과가 문자열이 아니어도 문자열로 강제 타입 변환되어 삽입된다.

console.log(`1+2=${1+2}`); // 1+2=3

불리언 타입


  • 논리적 참, 거짓을 나타내는 true, false
  • 프로그램의 흐름을 제어하는 조건문에서 자주 사용

undefined 타입


  • 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값
  • 개발자가 의도적으로 undefined를 할당하는 것은 권장하지 않음

null 타입


  • 변수에 값이 없다는 것을 의도적으로 명시할 때 사용
  • 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거
  • 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 함

Symbol 타입


  • ES6에서 추가된 7번째 타입
  • 다른 값과 중복되지 않는 유일무이한 값
  • 주로 객체의 유일한 프로퍼티 키를 만들기 위해 사용
// symbol 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol

// 객체 생성
var obj = {};

// symbol을 프로퍼티 키로 사용
obj[key] = 'value'
console.log(obj[key]); // value

객체 타입



데이터 타입의 필요성


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

동적 타이핑


정적 타입 언어 (C, JAVA 등)

  • 변수 선언 시 값의 데이터 타입을 미리 선언
  • 변수 타입 변경 불가
  • 데이터 타입에 맞는 값만 할당 가능
  • 컴파일 시점에 타입 체크(선언한 데이터 타입에 맞는 값을 할당했는지 검사) 수행
  • 타입의 일관성을 강제 => 안정적인 코드 구현

동적 타입 언어 (자바스크립트, 파이썬 등)

  • 변수 선언 시 타입 선언 X
  • 값을 할당하는 시점에 변수의 타입이 동적으로 결정 (타입 추론)
  • 재할당에 의해 변수 타입 변경 가능
  • 유연성은 높으나 신뢰성은 떨어짐

❗ 변수 사용 시 주의사항

  1. 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
  2. 변수의 유효 범위는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다.
  3. 전역 변수는 최대한 사용하지 않도록 한다.
  4. 변수보다는 상수를 사용해 값의 변경을 억제한다.
  5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.
profile
프론트엔드 공부 기록

0개의 댓글