데이터 타입

shin·2021년 5월 14일
0

javascript

목록 보기
3/23

데이터 타입

  • 최신 ECMAScript 표준은 다음과 같은 7개의 자료형을 정의한다.
  • 기본 자료형 (Primitive)
    • Number
    • String
    • Boolean
    • Undefined
    • Null
    • Symbol (ECMAScript 6 에 추가됨)

  • 객체 타입 (object / reference type)
    • Object

기본 자료형 (Primitive type)


숫자형(Number)

  • 숫자를 표현하거나 산술 연산을 하는데 사용되는 데이터 타입이다.
  • js는 모든 숫자의 형태를 허용한다.

1. 숫자 형태

let integer = 10; //10진수
let hex = 0xa; //16진수
let binary = 0b1010; //2진수
let octal = 0o12; //8진수
console.log(integer, hex, binary, octal);
//10, 10, 10, 10
console.log(negative, indices, double);
//-10 10 10.12
  • 숫자의 형태의 상관없이 모두 10진수로 변환되어 출력된다.

2. Infinity, NaN(Not a Number)

let IsInfinity = 10 / 0;
let IsNaN = 10 / "일";
console.log(IsInfinity, IsNaN);
// Infinity NaN
  • javascript 코드에서 변수 IsInfinity의 수식처럼 무한한 값이 출력될 경우 Infinity라는 값이 출력이 된다.
  • 변수 IsNaN처럼 숫자를 문자로 나눈는 것과 같은 말도 안되는 수식에는 NaN이 출력이 된다.

3. 오류

let sum = 0.1 + 0.2;
console.log(sum);
//0.30000000000000004
  • 컴퓨터는 수식을 계산할 때 2진법으로 변환하여 계산하게 되는데, 1의 경우 2진법으로 나타내면 001100110011...무한이 반복이 된다. 그렇기 때문에 예제의 수식을 계산하게 되면 0.30000000000000004이 출력이 된다.

문자열(string)

  • 문자열은 큰 따옴표"", 작은 따옴표''로 둘러 쌓여있는 값을 말한다.

1. 길이

  • .length를 이용해서 문자열의 길이를 알수 있다.
console.log("hello".length);
// 5

2. 연산

  • 문자열은 + 을 통해서 서로 붙일 수있다.
let a = "123";
let b = "456";
console.log(a+b);
//123456

문자열 + 숫자형

  • number + string = string
let a = "123";
let b = "abc";
console.log(a+b);
//123abc
  • string + number + number + string 경우 '같은 연산 순위이면 왼쪽부터' 원칙에 의해, ((string + number) + number) + string의 순서로 연산됩니다.
'<div~>' + 2 + 3 + ''
=> '<div~>2' + 3 + ''
=> '<div~>23' + ''
=> '<div~>23'

3. index

  • 문자열 값들은 인덱스 가지고 있다.
let a = "123";
console.log(a[1]);
//2

boolean

<script>
    document.write(1===1);
</script>
<script>
    document.write(1===2);
</script>

두 코드 모두 웹페이지에 출력하면

1===1는 true로 출력되고
1===2는 false로 출력된다

  • ===는 왼쪽의 항과 오른쪽의 항을 비교하는 비교연산자이고, 값이 맞으면 true가 출력되고, 틀리면 false가 출력된다

---> ture, false 값을 묶어서 boolean 이라고 한다.

undefined

  • var, let, const와 같이 변수를 선언하게 되면 javascript 엔진은 메모리에 변수 공간을 생성하게 된다. 이 공간에는 데이터가 할당이 되기 전까지 undefined 라는 값을 할당 시킨다.
let a; 
console.log(a);
//undefined
  • 예제를 출력해보면 변수 a의 값이 없기 때문에 undefined가 출력된다.
  • javascript 엔진에서 자동으로 undefined 값이 부여되기 때문에 아래의 예제처럼 코드를 작성하지는 않는다.
let a = undefined;
console.log(a);

null

  • 사용자가 의도적으로 변수공간이 비어있음을 표현하고자 할때 사용한다.
let a = null; 
console.log(a);
//null

null 사용 시, 주의할 점

  • 타입을 나타내는 문자열을 반환하는 typeOf 연산자로 null 값을 연산해보면 null이 아닌 object가 나온다. 이는 자바스크립트 설계상의 오류이다.

Symbol

  • 심볼(symbol)은 ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다.
const a = Symbol();
const b = Symbol();
console.log(a);
console.log(b);
//Symbol()
//Symbol()
  • 변수 a,b를 선언하고 값을 출력하면 Symbol() 값이 출력되지만 일치연산자로 확인 해보면 false 값이 출력되게 된다.
console.log(a===b);
console.log(a==b);
//false
//false
  • symbol은 유일성이 보장 되기 때문에 전체 코드중에 유일한 하나라고 보면된다.

0개의 댓글