[ Javascript ] 자료형과 변수 (Data Type & Variable)

duck-ach·2022년 10월 18일
0

Javascript

목록 보기
1/3
post-thumbnail

1. 자료형(Data Types, 데이터타입)

데이터타입 이란 변수를 선언할 때, 숫자나 문자열 또는 이 외의 것들을 변수에 저장하기 위하여 선언하는 데이터 종류를 말합니다.

💛 정적 타입 언어(Static Typed Language)
C나 Java와 같은 프로그래밍 언어에는 정적 타입 변수(int), 부동 소수점 타입 변수(double) 등이 있어 그 변수의 타입과 일치하는 데이터만 저장이 가능하다. 이와 같이 변수에 타입이 있는 언어를 정적 타입 언어(Static Typed Language) 라고 한다.

💛 동적 타입 언어(Dynamic Typed Language)
하지만 자바스크립트는 변수에 타입이 없으므로, 모든 타입의 데이터를 저장할 수 있다. 이와 같이 실행할 때 변수에 저장된 데이터 타입을 동적으로 바꿀 수 있는 언어를 동적 타입 언어(Dynamic Typed Language)라고 한다.

2. 데이터 타입 분류

데이터 타입은 크게 기본형참조형 두 가지로 나눌 수 있다.

💛 Primitive Type (기본형, 또는 원시 타입) : 값을 그대로 할당

  • Number
    • 정수, 실수 구분이 없다.
    • 숫자, NaN(Not a Number), +Infinite, -Infinite(+0/-0)으로 나누기를 해 보면 확인 가능)
  • String
    • 문자, 문자열 구분 없이 모두 string
    • 작은 따옴표(''), 큰 따옴표("")를 모두 사용할 수 있다.
  • Boolean
    • true, false
  • null
    • 의도적으로 값을 비운 상태
    • null
  • undifined
    • 값이 저장된 적이 없는 상태(초기화를 안한 변수)

💛 Reference Type (참조타입) : 값이 저장된 주소값을 할당(참조함)

  • Object
    • Array
      • Function
      • RegExp(정규표현식)
      • +ES6: map, set, weakmap, weakset
// 초기화가 없으면 undefined 상태
var a; 
console.log(a);

// 10을 저장하면서  number 타입을 가짐
var c = 10; 
console.log(c, typeof c);

// 같은 이름의 변수를 재선언할 수 있음
var c = 'hello'; 
console.log(c, typeof c);

// 루트 -25를 의미함(실제로 존재하는 숫자가 아님)
var c = Math.sqrt(-25); 
console.log(c, typeof c);

// Infinity, -Infinity
var c = 10 / -0; 
console.log(c, typeof c);

3. 변수(Variable)

Javascript의 변수 특징

  • 동적 타입이다. (느슨한 타입)
  • 변수를 선언할 때 자료형(타입)을 결정하지 않고, 변수명만 결정한다.
  • 변수에 값이 저장될 때 자료형(타입)이 결정된다.
  • 이미 저장된 변수의 자료형(타입)을 바꿔서 다시 저장할 수 있다.
  • 변수 선언이 없는 상태에서도 변수를 사용할 수 있다. (ES6에서는 반드시 선언이 필요한 변수가 존재한다.)

4. 변수 선언 키워드

💛 var

  • 스코프(범위) : 함수 레벨
  • 변수 선언 시 생략 가능
  • 같은 변수명으로 재선언이 가능
  • 초기화 생략 가능하다 : undifined 상태
  • 저장된 값의 수정이 가능

💛 let (ES6 표준) - 지역변수

  • 스코프(범위) : 블록 {}
  • 변수 선언의 생략 불가능
  • 같은 변수 명으로 재선언 불가능
  • 초기화 생략 가능 : 메모리에 변수가 안 만들어진 상태
  • 저장된 값의 수정 가능

💛 const (ES6 표준) - 상수

  • 스코프(범위) : 블록 {}
  • 변수 선언의 생략 불가능
  • 같은 변수명으로 재선언 불가능
  • 초기화 생략 불가능 : 상수이므로(자바의 final)
  • 저장된 값의 수정 불가능 : 상수이므로

5. 호이스팅(hoisting)

코드 중에는 항상 먼저 처리되는 코드가 있다. 예를들어, 변수의 선언이나 함수의 정의 등이 호이스팅에 속한다.

호이스팅 대상 : var let const function class

자료형 변환

💛 문자열 → 정수

  • Number('100') : 100
  • parseInt('100') : 100
var a = '100';
var b = Number(a);

console.log(a, typeof a); // String
console.log(b, typeof b); // number
       
var a = parseInt(a);
console.log(a, typeof a); // number

콘솔창 :

💛 실수 → 정수

var a = 1.5;
var b = parseInt(a);
console.log(b, typeof b);

콘솔창 :

💛 문자열 → 실수

  • Number('1.5') : 1.5
  • parseFloat('1.5') : 1.5
var c = '1.5';
var d = Number(c);
console.log(d, typeof d);
var d = parseFloat(c);
console.log(d, typeof d);

💛 정수/실수 → 문자열

  • String(100) : '100'
  • String(1.5) : '1.5'
var e = '100';
console.log(String(e));
var e = '1.5'
console.log(String(e));

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글