Data type

Fstone·2020년 9월 28일
0
post-thumbnail
post-custom-banner

Data type

Data type은 programming을 하면서 data를 제대로 연산하기 위해서 형태를 제대로 이해하고 있어야 한다.

Javascript 내 data type 은 boolean, string, number, null, undefined, object, array, function이 존재하고 ES6에서 새로 추가된 symbol이 있다.

Primitive value

  • Object가 아니면서 method도 가지지 않는 data value.
  • boolean, string, number, undefined, symbol
  • Immutable value, 원본 value를 해치지 않는다.

Boolean

  • boolean은 true, false값을 가질 수 있다.
const bool = true;
const bool = false; 

String

  • '', "" 로 구분한다.
const str = '1';
const not_str = 1

str === not_str // false

가장 이해하기 쉬웠던 number type과 string type 비교

function test(num) {
  let result = num + 2; 
  return result;
}

test(str); // '12';
test(not_str); // 3;

str과 not_str은 모두 1을 나타내고 있지만 data type에서는 '' 구문으로 string과 number로 명확하게 구분되어 진다.

2를 더해주는 함수를 만들어 차이를 비교해보면 number type은 일반적인 수학 연산과 같이 이루어지지만 string type과 연산을 실행하면 2도 string type으로 변환하여 연산되어 진다.

위에서 알수 있는 사실

  • string type에서도 연산을 사용할 수 있다.
  • string type과 number type을 연산할 경우 number type이 string type으로 형변환이 발생하여 연산이 실행된다.

Number

  • 가장 기본적인 literal 형식은 10진법
  • 부동 소수점을 표시할 수 있지만 사칙 연산에서 부정확하게 계산되는 경우가 발생할 수 있다.
  • ES에서 최소값과 최대값이 정해져 있다. 이 범위를 벗어날 경우 +/-Infinity로 변환된다.
    • 최소값은 Number.MIN_VALUE
    • 최대값은 Number.MAX_VALUE
  • 올바른 number type의 연산이 아닐 경우 NaN(Not a number) 반환된다.

Undefined, Null

  • undefined
    : 값이 할당되지 않은 변수를 호출하면 undefined가 반환된다.

  • Null
    : undefined와는 다르게 의도적으로 변수의 값을 비울때 null로 표기할 수 있다.

Object

key로 연결된 value의 집합이 될 수도 있고 index(정수의 key)를 가진 value의 집합이 될 수 있다. function도 object로 분류 된다.

let obj = {
   key: 'value',
   key2: 'value2',
   .
   .
   .
};
/** 
  object에서 새로운 key를 생성하고 값을 할당할 때 [], 
  bracket notation 또는 ., dot notation을 사용한다.
**/

/** bracket notation []로 key를 구분하지만 key를 참조하는 
변수가 선언되어 있지 않으면 string으로 표기해야 한다. **/
obj['key']; // 'value'
obj[key]; // ReferenceError key is not defined

let key = obj['key'];
obj[key] // 'value'


// dot notation은 객체 안의 key를 그대로 받아들인다.
let key2 = 'different value'
obj.key2; // 'value2'


/**
  array는 가장 앞의 value부터 0부터 시작하는 index를 가진다. 
**/
let arr = [value, value2, ...value];

// array의 값은 arr[index]로 가져올 수 있다. 
arr[0]; // value
arr[1]; // value2

/** 
  function은 어떠한 data를 가공할 때 사용한다. 
  함수 선언식(function declaration)과 
  함수 표현식(function expression)으로 선언할 수 있다. 
**/
let str = '1';

function test_func(data_value) {
  let result = Number(data_value);
  return result;
}

test_func(str); // 1

let test_func = function (data_value) {
  let result = Number(data_value);
  return result;
}

test_func(str); // 1

두 함수 선언 모두 같은 결과 값을 반환하지만 함수선언과 함수표현은 code parsing하는데 다른 차이점이 있다.

Reference
https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures
https://developer.mozilla.org/ko/docs/Glossary/Primitive
https://d2fault.github.io/2018/02/28/20180228-javascript-number-type/
https://ko.wikipedia.org/wiki/NaN

post-custom-banner

0개의 댓글