ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 타입(js)
    JavaScript 2022. 6. 22. 19:39
    728x90

    데이터 타입

    숫자 타입

    • javascript는 하나의 숫자 타입만 존재한다. (정수, 실수 등 모두 하나로 통합)
    • Infinity : 양의 무한대
    • -Infinity : 음의 무한대
    • NaN : 산술 연산 불가
    // 모두 숫자 타입이다.
    var integer = 10;    // 정수
    var double = 10.12;  // 실수
    var negative = -20;  // 음의 정수
    
    var binary = 0b01000001; // 2진수
    var octal = 0o101;       // 8진수
    var hex = 0x41;          // 16진수
    
    // 표기법만 다를 뿐 모두 같은 값이다.
    console.log(binary); // 65
    console.log(octal);  // 65
    console.log(hex);    // 65
    console.log(binary === octal); // true
    console.log(octal === hex);    // true
    
    // 숫자 타입은 모두 실수로 처리된다.
    console.log(1 === 1.0); // true
    console.log(4 / 2);     // 2
    console.log(3 / 2);     // 1.5
    
    // 숫자 타입의 세 가지 특별한 값
    console.log(10 / 0);       // Infinity
    console.log(10 / -0);      // -Infinity
    console.log(1 * 'String'); // NaN
    
    // 자바스크립트는 대소문자를 구별한다.
    var x = nan; // ReferenceError: nan is not defined
    

    문자열 타입

    • 0개 이상의 16비트 유니코드의 집합으로 전 세계 대부분의 문자가 표현 가능하다.
    • 작은따옴표(’’), 큰따옴표(””), 백틱(``)으로 텍스트를 감싼다.
    // 문자열 타입
    var string;
    string = '문자열'; // 작은따옴표
    string = "문자열"; // 큰따옴표
    string = `문자열`; // 백틱 (ES6)
    
    string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.';
    string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다.";
    

    템플릿 리터럴

    • ES6부터 멀티라인 문자열, 표현식 삽입, 태그 템플릿 등 편리한 문자열 처리 기능을 제공하는 템플릿 리터럴 표기가 도입됐다.
    • 백틱(``)을 사용해 표기한다.
    var template = `Template literal`;
    console.log(template); // Template literal
    

    1) 멀티라인 문자열

    • 원래 문자열에 줄바꿈(개행)이 허용되지 않지만 백틱은 가능하다.
    var str = 'Hello
    world.';
    // SyntaxError: Invalid or unexpected token
    

    2) 표현식 삽입

    • 문자열은 + 을 통해 연결할 수 있다..
    var first = 'Ung-mo';
    var last = 'Lee';
    
    // ES5: 문자열 연결
    console.log('My name is ' + first + ' ' + last + '.'); // My name is Ung-mo Lee.
    
    • 표현식 삽입을 통해 더 가독성 좋게 삽입할 수 있다.
    var first = 'Ung-mo';
    var last = 'Lee';
    
    // ES6: 표현식 삽입
    console.log(`My name is ${first} ${last}.`); // My name is Ung-mo Lee.
    

    불리언 타입

    • 참 거짓을 나타내는 true, false 뿐이다.
    var foo = true;
    console.log(foo); // true
    
    foo = false;
    console.log(foo); // false
    

    undefined 타입

    • 값을 지정하지 않았을 때 자동으로 undefined 초기화된다.
    var foo;
    console.log(foo); // undefined
    

    null 타입

    • null은 Null, NULL과 다름에 유의
    • 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null이 반환 되기도 한다.

    심벌(Symbol) 타입

    • 변경 불가능한 원시 타입이다. 함수를 통해 호출된다.
    • 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.
    var a = Symbol('abc')
    var b = Symbol('abc')
    
    console.log(a === b) // false
    

    객체 타입

    • JavaScript는 객체 기반의 언어이며, 위에 언급한 것을 제외한 모든 것이 객체이다.

    데이터 타입의 필요성

    var a = 100;
    var b = 100;
    

    위와 같은 경우 다음과 같다고 생각할 수 있습니다.

    100 : 0x123(100이 담긴 메모리 주소)
    a : 0x111
    b : 0x112  라면
    0x111 -> 0x123 ( a가 100을 가리킴 )
    0x112 -> 0x123 ( b가 100을 가리킴 )
    
    b = 111;
    
    111 : 0x124
    0x112 -> 0x124
    
    • 즉, a와 b가 담겨있는 주소는 따로 있고 a, b에 a, b가 가리키는 주소를 담는 것 입니다.

    동적 타이핑

    • 정적 타입 언어는(C, Java …) 변수를 선언할 때 변수에 할당할 수 있는 값의 종류(데이터 타입)를 사전에 선언해야한다.
    • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라고 하며, 동적 타입 언어라고 한다.
    var foo;
    console.log(typeof foo);  // undefined
    
    foo = 3;
    console.log(typeof foo);  // number
    
    foo = 'Hello';
    console.log(typeof foo);  // string
    
    foo = true;
    console.log(typeof foo);  // boolean
    
    foo = null;
    console.log(typeof foo);  // object
    
    foo = Symbol(); // 심벌
    console.log(typeof foo);  // symbol
    
    foo = {}; // 객체
    console.log(typeof foo);  // object
    
    foo = []; // 배열
    console.log(typeof foo);  // object
    
    foo = function () {}; // 함수
    console.log(typeof foo);  // function
    
    728x90

    댓글

Designed by Tistory.