동적 타이핑


  • 자바스크립트는 느슨한 타입 (loosely typed) 언어, 혹은 동적 (dynamic) 언어이기 때문에
    변수의 타입을 미리 선언할 필요가 없음!!

  • 타입은 프로그램이 처리되는 과정에서 자동으로 파악되기 때문에 같은 변수에 여러 타입의 값을 넣을 수 있음

  let a = 42;  // a는 Number 
  a = "bar";   // a는 이제 String
  a = true;    // a는 이제 Boolean

  • 최신 ECMAScript 표준에 의하면 자바스크립트 자료형은 7개로 구분할 수 있음

    • 기본 자료형 ( Primitive )
      Boolean Null Undefined Number String Symbol

    • Object


Boolean


  • 논리적 요소
  • true false
  const a = true;
  const b = false;

  console.log(a, typeof a);   // true 'boolean'
  console.log(b, typeof b);   // false 'boolean'

Null

  • 값을 가지고 있지만, 비어있는 값
  const a = null;

Undefined

  • 아무 값도 할당하지 않음 ( 정해지지 않음 )
  let b;

  • 자바스크립트에서 null undefinedfalsy한 값이다

Number


  • 정수와 부동 소수점을 구분하지 않음
  const a = 12;
  console.log(a, typeof a);  // 12 'number'

  const b = 12.7;
  console.log(b, typeof b);  // 12.7 'number'

  const c = NaN;
  console.log(c, typeof c);  // NaN 'number'

  • NaN - 숫자가 아님 ( Not-A-Number )
  const a = Number('78');     // 문자 78을 숫자로 형변환
  console.log(a, typeof a);   // 78 'number'


  // 숫자로 형변환 했지만 숫자형태 아니기 때문에 숫자로서 읽을 수 없음
  const b = Number('wow');
  console.log(b, typeof b);   // NaN 'number'   

String


  • 텍스트 데이터를 나타낼 때 사용함
  • '' 또는 ""로 감싸준다
  const a = 'apple';

  • 문자열도 연산이 가능함
  const a = 'Hello' + ' World';
  console.log(a);  // Hello World
  • 표현식을 삽입할 수도 있음
  const a = 'Hello';
  console.log(a + ' World');  // Hello World
  • 그런데 삽입할 표현식이 많아질수록 복잡해지고 가독성도 떨어짐
  const fruit = 'melon';
  const food = 'pizza';

  console.log('I like ' + fruit + ' and ' + food);

  • 이러한 불편함을 줄이기 위해 ES6부터 생긴 기능이 있음 → 템플릿 리터럴

  • 따옴표 ( '' "" ) 대신 백틱 ( ` )을 사용하고,
    표현식을 ${expression}으로 표현!

  const fruit = 'melon';
  const food = 'pizza';

  console.log(`I like ${fruit} and ${food}`);

Symbol


  • ES6에서 추가된 기능
  • 유일하고 변경 불가능한, 고유한 값을 만들 때 사용
  • Symbol() 함수를 호출
  const a = ('tomato');
  const b = ('tomato');

  console.log(a === b);  // true  ( Symbol이 아닌 경우 두 값은 같음 )
  const a = Symbol('tomato');
  const b = Symbol('tomato');

  console.log(a === b);  // false  ( 다른 값 )

  • string이 같을 시, 동일한 symbol을 만드려면 .for
  const a = Symbol.for('orange');
  const b = Symbol.for('orange');

  console.log(a === b);  // true
  • symbol을 출력할때는 .description을 붙여야 함
  console.log(`a is ${a}`);  // TypeError
  
  console.log(`a is ${a.description}`);  // a is orange


📝 출처

profile
📝내가 보려고 기록하는 블로그

0개의 댓글