반응형

# 자바스크립트 학습

# 데이터 타입

  • 데이터(Data) 의 사전적 의미는 자료이다.
  • 데이터 타입을 자료형이라고 부르기도 한다.
  • 데이터는 반드시 타입을 갖는다.
  • 자바스크립트는 데이터를 기준(변수에 설정된 데이터에 따라)으로 타입을 결정 한다. (타입을 먼저 선언하고 타입에 맞는 데이터를 할당하지 않는다.)

## 데이터 타입의 형태

  • 숫자 타입
var value = 123;
  • 문자 타입(큰 따옴표 or 작은 따옴표 안에 작성)
var value1 = "work";
var value2 = "book";

## typeof 연산자

  • typeof 연산자와 같은 단어를 키워드 라고 한다. ( 키워드란 특별한 의미를 가진 단어)
  • typeof value에 데이터를 작성, 데이터 타입을 반환
val point = 123;
log(typeof point);
=> number 출력

val book = "책";
log(typeof book);
=> string 출력

# 데이터 타입의 분류

  • 데이터 타입은 언어 타입과 스펙 타입으로 분류된다.

## 언어 타입

  • 자바스크립트 프로그램에서 사용할 수 있는 타입이다.
  • Undefined, Null, Boolean, String, Number, Object

## 스펙 타입

  • 언어 알고리즘을 위한 타입이다.
  • 자바스크립트에서는 사용할 수 없다.
  • Reference, List, Completion, Property Descriptor, Data Block, Lexical Environment, Lexical Record 등

## Number 타입

  • 부호를 가진 값(+, -)
var point = 123;
log(typeof point);
point = -1.23;
log(typeof point);
=>
number
number 출력
  • 숫자 값의 범위는 2의 64승 - 2의 53승 + 3
  • Number 타입의 특수한 3개 값
NaN : Not-a-Number (숫자가 아니라는 시맨틱이면서 값이다.)

Infinity : 양수 무한대

-Infinity : 음수 무한대
  • NaN은 자바스크립트의 특징이며 성향으로서, 되도록이면 프로그램이 죽지 않도록 하기위한 시맨틱이자 값 (숫자가 아니라는 값)
Not-a-Number 예
var point = 1 * "A";
log(point);
=> NaN

## String 타입

  • 문자 타입으로 큰 따옴표("") or 작은 따옴표('') 사이에 작성한다.
  • 최대 문자수는 2의 53승-1
  • 큰 따옴표와 작은 따옴표를 같이 사용할 때 따옴표 작성 방법
var point = "책, '123'";
log(point);
=> 책, '123' 
( 큰 따옴표 안에 작성된 작은 따옴표도 출력 )

point = '책, "123"';
=> 책, "123"
( 작은 따옴표 안에 작성된 큰 따옴표도 출력 )
  • 따옴표에 숫자를 작성하면 문자 타입이 된다.
var value = "123";
log(typeof value);
=> string

## Undefined 타입

  • Undefined (대문자)는 스펙에서 사용하는 타입이다.
  • undefined (소문자)는 값이다.
  • 변수의 디폴트 값(Defatult)이다. 
var point;
log(point)
=> undefined
변수를 선언만 한 것으로, undefined가 초깃값으로 설정된다.
  • undefined는 변수에 값을 할당하지 않은 것을 나타내는 시맨틱이다.
  • 자바스크립트의 변수는 반드시 이름과 값을 갖는 구조가 되어야 한다.
  • undefined는 값이므로, 변수에 할당할 수 있다.
var point = undefined;
log(point);
=> undefined

## Null 타입

  • Null (대문자)는 스펙에서 사용하는 타입이다.
  • null (소문자)는 값이다.

## null과 nudefined의 차이

  • undefined는 단지 변수만 선언한 것 ( 변수에 undefined 값을 할당하지 않아도 변수는 undefined 값을 갖는다. )
  • 하지만, null은 변수에 null값을 할당해야 값이 null이 된다.
  • null은 의도적으로 값을 할당한 것으로 코드를 수행한 것이 된다.
var book;			// 변수만 선언한 것
log(book);

var point = null;	// null 값을 할당한 것
log(point);

=>
undefined
null

## Boolean 타입

  • true, false
log(true);
log(false);

=>
true
false

## Object 타입

  • Object (대문자) 형태는 아래와 같다. (콤마로 구분하여 여러개 사용 가능)
{name:value} 형태		// 이름-값(=키-값)
  • 프로퍼티 (Property) : name과 value 하나(하나의 쌍)를 지칭한다. (위의 {name:value}를 의미)
  • Object (대문자)는 프로퍼티의 집합이다. Object에는 프로퍼티를 작성하지 않아도 된다.(즉, 0개 이상의 프로퍼티 작성 가능)
var book = {
	title: "책", point: 123
};
log(book);
=>
{title: 책, point: 123}

# 자바스크립트의 기본 데이터 타입 정리

  • 기본 데이터 타입을 Primitive 타입이라고 한다.
log(typeof 123);
log(typeof "문자열");
log(typeof true);
log(typeof undefined);

=>
number
string
boolean
undefined	// undefined는 값과 타입이 같다.
log(typeof null);
log(typeof {book: "책"});

=>
object	// typeof 연산자의 한계(설계 미스)
object
반응형

+ Recent posts