[JavaScript] 자료형과 연산자

박준석·2024년 4월 3일

JavaScript

목록 보기
2/10
post-thumbnail

자료형

자료형(Data Type)이란 프로그래밍 언어로 조작 할 수 있는 값의 유형을 말한다. 자바스크립트에서는 총 8가지 자료형이 존재하고 크게 원시 타입(Primitive Type)비원시타입(Non Primitive Type)으로 나뉜다.
자료형

원시 타입

원시 타입의 데이터는 변수에 할당이 될 때 메모리 상에 고정된 크기로 저장이 되고 해당 변수가 원시 데이터 값을 보관한다. 원시 타입 자료형은 모두 변수 선언, 초기화 할당 시 값이 저장된 메모리 영역에 직접적으로 접근한다.

원시 타입의 종류

  • number
  • string
  • boolean
  • null
  • undefined
  • symbol
  • BigInt
  1. number
    number타입은 숫자를 나타내는 타입이다. ECMAScript 표준에 따르면 number 타입은 -(2^53 -1) ~ (2^53 -1) 범위의 숫자 값을 나타낼 수 있다.
let num = 20; //type : number

console.log(num) // 20
  1. string
    string타입은 문자열을 나타내는 타입이다. 작은따옴표(')와 큰 따옴표(")를 이용해서 나타낸다.
let a = 'world'; //type : string

console.log(a) // world
  1. boolean
    boolean타입은 참과 거짓을 나타내는 타입이다. true, false를 이용한다.
let a = true; //type : boolean
let b = false; //type : boolean

console.log(a == b); // false
console.log(a != b); // true
  1. null
    null타입은 null 값 하나만 존재한다. 의도적으로 변수에 값이 없다는 것으로 명시할 때 사용한다.
    undefined와는 다르다. undefiend는 개발자가 의도적으로 값을 할당한 것이 아니라 JavaScript 엔진에서 초기화된 값이다.
let a; //type : boolean
let b = null; //type : null

console.log(a); // undefined
console.log(b); // null
  1. undefined
    undefined타입은 undefined 값 하나만 존재한다. 변수 선언 이후에 값을 할당하지 않은 경우에 undefined 값을 갖는다.
let a; //type : undefiend

console.log(a); // undefined
  1. symbol
    symbol타입은 ES6 문법에서 새로 추가된 타입이다. 다른 타입과 다르게 symbol()이라는 기호를 통해서만 생성할 수 있다. symbol은 private property를 가능하게 하기 위해 처음 만들어졌다 하지만 Object.getOwnPropertySymbols를 통해 찾을 수 있기에 현재는 property 간의 이름 충돌을 방지하기 위해 사용되고 있습니다.
let a = Symbol('hello'); //type : Symbol
let b = Symbol('hello'); //type : Symbol

console.log(a);  // Symbol(hello)
console.log(b);  // Symbol(hello)

sybol 타입 자세히 알기

  1. BigInt
    BigInt타입은 ES2020에서 새롭게 추가된 타입이다. number 타입인 (2^53-1)보다 더 큰 숫자를 표현할 수 있다. BigInt 타입으로 만들기 위해서는 숫자 뒤에 n을 붙여야한다.
let num = 12n; //type : BigInt

console.log(num);          // 12n

console.log(num == 12);    // true
console.log(num === 12);   // false
console.log(num == 12n);   // true
console.log(num === 12n);  // true

console.log(1n < 2);       // true
console.log(2n > 1);       // true
console.log(2n > 2);       // false

BigInt타입은 소수점을 반환하지 않는다.

비원시 타입(참조 타입)

자바스크립트에서 원시 타입 이외의 모든 값은 참조형 객체 타입이다. 대표적으로 배열, 함수, 객체가 있다. 원시 타입과 차이점은 변경 가능한 값이다. 즉, 변수의 크기가 동적으로 변한다.

이러한 특징 때문에 Object의 데이터 자체는 별도의 메모리 공간(heep)에 저장되며, 변수에 할당 시 데이터에 대한 주소가 저장되고, 자바스크립트 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근하게 되는 것이다.

let obj = {
    a: 1,
    b: 2,
    c: 3
}

let newObj = obj;
newObj.a = 100; // 참조된 값 중 a 의 값에 100 을 재할당

console.log(obj.a); // 100
// 해당 주소를 참조한 newObj 의 a 값을 바꾸었기 때문에 두 객체 모두 반환하는 a 값이 변경됨.

연산자

자바스크립트는 여러 종류의 연산자가 있다.

산술 연산자

산술 연산자는 사칙연산을 다루는 가장 기본적이면서도 많이 사용되는 연산자이다. 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
산술 연산자

  • 연산자의 우선순위
    연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때 어느 연산자가 처리될 것인가를 결정한다.
    연산자 우선 순위

  • 연산자의 결합 방향
    연산자의 결합 방향은 수식 내에 우선순위가 같은 연산자가 둘 이상 있을 때, 먼저 어느 연산을 수행할 것인가를 결정한다.
    연산자 결합 방향

대입 연산자

대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽이다.
대입 연산자

증감 연산자

증감 연산자는 피연산자를 1씩 증가 혹은 감소시킬 때 사용하는 연산자이다. 이 연산자는 피연산자가 단 하나뿐인 단항 연산자이다.
증감 연산자

비교 연산자

비교 연산자는 피연산자 사이의 상대적인 크기를 판단하여, 참(true)과 거짓(false)을 반환한다. 비교 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
비교 연산자

논리 연산자

논리 연산자는 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 반환한다. &&|| 연산자는 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다. ! 연산자는 피연산자가 단 하나뿐인 단항 연산자이며, 피연산자의 결합 방향은 오른쪽에서 왼쪽이다.
논리 연산자

  • 진리표
    진리표

삼항 연산자

삼항 연산자는 유일하게 피연산자를 세 게나 가지는 조건 연산자이다.

표현식 ? 반환값1 : 반환값2
profile
느리지만 탄탄한 개발자 1명 빠른 개발자 10명 안부럽다.

0개의 댓글