데이터 타입

정수·2023년 3월 20일
0

JavaScript

목록 보기
15/15
post-thumbnail

01. 숫자 타입

ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식, 즉 모든 수를 실수로 처리합니다.

var x = 0b01000001; // 2진수
var y = 0o101; // 8진수
var z = 0x41; // 16진수

console.log(x === y) // true
console.log(y === z) // true

추가적으로 아래 3가지의 값도 표현할 수 있습니다.

console.log(1 / 0); // Infinity
console.log(1 / -0); // -Infinity
console.log(1 * 'String'); // NaN

이때 Javascript는 대소문자를 구문하기 때문에 NaN(Not-a-Number)의 대소문자가 다른 표기법들은 식별자로 해석합니다.

02. 문자열 타입

JavaScript에서의 문자열은 원시 타입이며, 변경 불가능한 값입니다. 작은따옴표(''), 큰따옴표("") 그리고 ES6에서 도입된 백틱(``)을 이용해서 표현 가능합니다.

03. 템플릿 리터럴

ES6에서 도입된 문자열 표기법입니다. 백틱(``)을 이용해서 표현하며 아래 기능들을 제공합니다.

  1. 멀티라인 문자열(multi-line string)

    console.log('first\nsecond'); // 이스케이프 시퀀스 사용
    console.log(`first
    second`); // 멀티라인 문자열 사용
  2. 표현식 삽입(expression interpolation)

    var first = 'Jungsoo';
    var last = 'Bae';
    
    console.log('My name: ' + last + ' ' + first); // 문자열 연산자 사용
    console.log(`My name: ${last} ${first}`); // 표현식 삽입

    이때 표현식은 문자열로 타입이 강제로 변경되어 삽입됩니다.

04. null 타입

변수에 null을 할당한다는 것은 이전에 참조했던 값을 더이상 참조하지 않겠다는 의미이며 JavaScript Engine은 누구도 참조하지 않는 메모리 공간에 대해 G.C(가비지 콜렉션)을 수행할 것입니다.

05. symbol 타입

symbol 타입은 변경 불가한 원시 타입의 값이며 다른 값과 중복되지 않는 유일무이한 값입니다. 주로 이름이 충동할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용합니다.

다른 원시 값은 리터럴에 의해 생성하지만 심벌은 Symbol 함수를 호출해야만 생성이 가능합니다. 이는 외부에 노출되지 않으며 다른 값과 절대 중복되지 않습니다.

var key = Symbol('key'); // 심볼 값 생성
console.log(typeof key); // symbol

06. 객체 타입

JavaScript는 객체 기반의 언어이며, 이를 이루고 있는 대부분의 것들이 객체입니다.

07. 필요성

값을 메모리에 저장하고 참조할 때, 어느 정도의 메모리 공간을 확보하고 호출해야 하는지 알아야 낭비와 손실 없이 액션을 수행할 수 있습니다. 또한 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정해야 할 때에도 데이터 타입을 알고 있어야 정확한 값으로 처리할 수 있습니다. 가령, 메모리에 저장된 0100 0001을 숫자로 해석하면 65이지만 문자열로 해석한다면 A인 상황이 발생하기 때문입니다.

08. 동적 타이핑

JavaScript는 기본적으로 타입을 가지는 대상이 변수가 아닌 이기 때문에 변수의 타입은 어떤 값이 할당되는지에 의해 언제든 변경될 수 있습니다. 이와 같이 변수를 선언할 때 타입이 결정되지 않는 언어를 동적 타입(dynamic type) 언어라고 부르며 JavaScript, Python, Ruby 등과 같은 언어가 이에 해당합니다.

이와는 반대로 변수를 선언할 때 데이터 타입도 함께 선언(명시적 타입 선언)해야 하는 언어를 정적 타입(static type) 언어라고 하며 C, Java 등과 같은 언어가 이에 해당합니다.

이러한 동적 타입 언어는 유연성은 높지만 신뢰성이 떨어지기 때문에 안정적인 프로그램을 만들기 위해서 변수를 사용할 때 여러 주의 사항이 존재합니다.

  • 변수는 꼭 필요한 경우에만 제한적으로 사용합니다.
  • 스코프를 최대한 좁게 만들어 오류가 발생할 확률을 줄여줍니다.
  • 전역 변수는 최대한 사용하지 않도록 주의합니다.
  • 변수보다는 상수(const)를 사용하여 값의 변경을 최대한 억제합니다.
  • 변수 이름은 목적이나 의미를 투영할 수 있도록 신중하게 네이밍합니다.

컴퓨터가 이해하는 코드는 어떤 바보도 쓸 수 있다. 하지만 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 쓴다. - Martin Fowler, < refactoring 저자 >

profile
해피한하루

0개의 댓글