데이터 타입(data type)

강지원·2021년 8월 25일
0
post-thumbnail

데이터 타입이란

데이터 타입은 프로그래밍 언어에서 사용할 수 있는
데이터의 종류를 말한다.

1. JS의 데이터 타입 특징

  • 자바스크립트의 모든 값은 데이터 타입을 가지며
    자바스크립트 ES6은 7개의 데이터 타입을 제공한다.

  • 자바스크립트에서 제공하는 7개의 데이터 타입은 크게
    원시 타입(primitive data type)과 객체 타입(object / reference type)으로 구분할 수 있다.

primitive data type

1. number

  • 자바스크립트의 number type은 모든 수를 실수로 처리한다.
    정수로 표시된다해도 사실은 실수다. 따라서 정수로 표시되는 수 끼리
    나누더라도 실수가 나올 수 있다.

  • 정수만을 표현하기 위한 특별한 자료형은 없다.
    (java를 공부할 때 있던 int, long, float, double과 같은 타입은 없었다)

  • 소수점을 표현할 수 있단 것 외에도, Number 타입은
    세 가지 특이한 값들도 표현할 수 있다.
    +Infinity(양의 무한대), -Infinity(음의 무한대),
    and NaN ("Not a Number", 산술 연산 불가)이 있다.

ex)
const count = 30; // > 정수
const size = 30.1; // > 실수
console.log(`value: ${count}, type: ${typeof count}`);// > number type 출력
console.log(`value: ${size}, type: ${typeof size}`);// > number type 출력

// 특이한 값: infinity, -infinity, NaN
const infinity = 3 / 0;
const negativeInfinity = -3 / 0;
const nAn = `not a number` / 3;
console.log(infinity); // > Infinity
console.log(negativeInfinity); // > -Infinity
console.log(nAn); // > NaN

2. string

  • 문자열(string) 타입은 텍스트 데이터를 나타내는데 사용.

  • 자바스크립트의 문자열은 변경 불가능 (immutable) 하다.
    한 번 문자열이 생성되면, 그 문자열을 수정할 수 없다는 것.
    그러나 원래 문자열에서 일부가 수정된 다른 문자열을 만드는건 가능하다
    (예시를 드는 게 이해가 잘 되었다.)

ex)
let name = 'kang';
name = 'jiwon';
// 코드 첫 줄의 문자열 kang이 생성되었으므로 앞으로 kang은 재사용 x
// 변수 str은 문자열 ‘kang’을 가리키고 있다가
//문자열 ‘jiwon’을 가리키도록 변경되었다.

3. boolean

  • 논리적인 데이터 유형으로 참(true) 혹은 거짓(false) 값만을 가질 수 있다

  • 어떤 코드 부문을 실행하거나 반복이 필요할 때 사용된다.

ex) 
function findGreaterNum(num1, num2) {

if(num1 > num2) {
  return  "Big one";
} else if(num1 < num2) {
  return "Big two";
} else if(num1 === num2) {
  return  "equal num" ;
}
}

const result = findGreaterNum(1,2);
console.log(result);

// 결과값으론 big two가 출력되었다.
// if 함수 안의 값이 true라면(= 조건이 맞다면)
// 해당 return 값을 돌려주겠다는 의미의 코드였다.
// 코드를 짜며 어디에 쓸 수 있을까 잠깐 고민해봤는데
// 웹 실행 시 다크 모드에 쓸 수 있겠다는 생각이 들었다.

4. undefined

  • undefined 타입의 값은 undefined가 유일
    값을 할당하지 않은 변수는 undefined 자료형입니다.

  • 메서드와 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefine 반환

ex)

let k ;
console.log(k);// 변수 k에 대한 value가 없기 때문에 undefined 출력

5. null

  • null 타입의 값은 null이 유일.
    어떤 값이 의도적으로 비어있음을 표현하며
    boolean 연산에서는 거짓으로 취급한다.

  • null은 Null, NULL등과 다르다.(JS는 대소문자를 구분하기 때문)

null과 undefined의 차이

undefined와 다르게 null은 원시 타입(primitive value)이므로,
JavaScript에서는 구현 버그로 간주한다.
undefined == null은 true이다.

하지만 자료형까지 엄격하게 검사하는 일치 연산자인 ===를 써보면
null과 undefined의 자료형이 다르기 때문에 false가 출력된다

6. symbol

  • Symbol은 유일하고 변경 불가능한 기본값이다.
    클래스나 객체 형식(object type)의 내부에서만 접근할 수 있도록
    전용(private) 객체 속성의 키(key)로 사용된다.
ex)
// symbol은 개체에 대한 고유 식별자를 생성한다.

const symbol1 = Symbol('k');
const symbol2 = Symbol('k');
console.log(symbol1 === symbol2);
//  false : 동일한 string을 작성해도 다른 symbol로 만들어짐

// string 이 같을 때 동일한 symbol 만들기
const gSymbol1 = Symbol.for('k');
const gSymbol2 = Symbol.for('k');
console.log(gSymbol1 === gSymbol2); // true

object / reference type

  • 원시 타입(Primitives)을 제외한 나머지 값들(배열, 함수, 정규표현식 등)은 모두 객체이다

  • 객체는 프로퍼티를 변경, 추가, 삭제가 가능하므로 변경 가능(mutable)한 값이라 할 수 있다

let foo = {
  val: 10
}

let bar = foo;
console.log(foo.val, bar.val); // 10 10
console.log(foo === bar);      // true

bar.val = 20;
console.log(foo.val, bar.val); // 20 20
console.log(foo === bar);      // true



let a = {}, b = {}, c = {}; // a, b, c는 각각 다른 빈 객체를 참조
console.log(a === b, a === c, b === c); // false false false


a = b = c = {}; // a, b, c는 모두 같은 빈 객체를 참조
console.log(a === b, a === c, b === c); // true true true

정리

특징은 외우되 예제는 많이 써봐야 한단 걸 깨달았다.
코드는 절대 외우는 게 아니다!


Reference
MDN
PoiemaWeb
25%
Dream coding

profile
'Why' better than 'Yes'

0개의 댓글