ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2021_11_29 데이터 타입
    IT/js 2021. 11. 30. 02:53

    개인적으로 데이터타입에서 알아야할 것들을 기록

     

    1. js 에서의 데이터 타입은 줄여서 타입이라고 부르며 값의 종류를 말함

     

    2. js 에서 모든 값은 데이터 타입을 가진다.

      ex - 나는 YJ라는 인간이다. -> 인간이라는 타입

     

    3. 7개의 데이터 타입이 있으며 6개의 원시타입과 1개의 객체 타입으로 구분 할 수 있다.

    원시 타입 숫자 타입 (number) 숫자(정수와 실수)
    문자열 타입 (string) 문자열
    불리언 타입 (boolean) 참(true) 거짓(false)
    undefined 타입 값을 넣지 않은 변수에 할당되는 값
    null 타입 의도적으로 값을 넣지않을때 사용되는 값
    심벌 타입 (symbol) ES6에 추가된 7번째 타입
    객체 타입 객체, 함수, 배열 등 위의 6가지 제외한 전부

     

    4. 숫자 타입에서 알야할 것

      - 정수, 실수, 음수, 2진수, 8진수, 16진수 표기 가능

      - 숫자와 문자를 나누었을때 발생하는 에러 NaN(산술연산 불가 not-a-number)

      - Infinity(양의 무한대), -infinity(음의 무한대)

     

    5. 문자열 타입에서 알아야할 것

     - 텍스트 데이터 타입을 말하는 것이며 ' ', " ", ` ` (작은따옴표, 큰따옴표, 백틱) 으로 표기 가능

     - 따옴표, 백틱으로 감싸지 않을 경우 키워드, 식별자로 인식함 

     

     - 백틱은 es6 즉 2015년 부터 도입되었음

     - ` ` 사용 하는 것은 템플릿 리터럴이라고 하며 백틱 내부에서 개행이 가능하다 (따옴표는 불가능)

     

     - 따옴표에서 개행을 하기 위해선 \n 이라는 개행 이스케이프 시퀸스를 사용하여야 한다.

     - 이스케이프 시퀸스는 \\, \', \" (문자열 내부에서 \, ', " 사용), \n(개행) 정도로만 알면 된다.  

     - 따옴표 문자열에서 이스케이프 시퀸스를 사용하거나 백틱에서 엔터쳐서 하는것은 같은 결과값을 가진다

     

    Var first = ‘hello;
    Var last = ‘world’; 
    
    // 문자열
    Console.log(‘My name ‘ + first + ‘ ‘ + last ); 
    // My name hello world 
    
    // 백틱 
    Console.log(`my name ${first} ${last}.`); 
    // My name hello world 
    // 하면 같은 값이 나온다 문자열이 아니더라도 타입이 강제로 변환

     - 백틱 외에 ${first} 입력할 경우 '${first}' 가 통째로 출력된다

     

    6. 불리언 타입

     - 다른 언어를 접하고 와서 인지 불리언 타입보다 bool 타입이라고 읽는게 마음 편하다 짧기도하고

     - true, false를 정하는 타입인데 조건문(if)에서 굉장히 많이 사용된다.

     

    7. undefined 타입, null 타입

     - undefined 타입의 값은 undefined가 유일하다

     - null 타입의 값은 null이 유일하다 (대소문자 구별하니 null 필히사용)

    let a; 
    // undefined
    // 변수 선언 후 값을 넣지 않을 경우 undefined 타입
    
    let a = null;
    // null
    // 변수 선언 후 초기화 및 의도적으로 빈값을 넣었다는 것 (코드의 명확성)

     - 즉, 초기화되지 않은 변수

     - 의도적이든 아니든간에 값을 넣지 않을 경우 undefined 타입이 들어간다

     - 정확히 해당 변수는 빈값을 넣어 주기로 했다 라는 null 값을 대입 시켜 코드를 확실시 하자

     

    8. 심벌 타입

     - 변경 불가능한 원시 타입의 값

     - 다른 값과 중복되지 않는 유일무이한 값

    let a = Symbol('abc');
    let b = Symbol('abc');
    
    a === b; // false

     - a와 b는 다른 주소를 가지고 잇지만 가르키고 있는 값은 abc 같은 값을 가진다.

     - 하지만 Symbol 타입이기때문에 false가 나온다.

     

    참고. js는 같은 값을 가지고있으면 변수의 주소는 다를지라도 가르키고 있는 주소는 같다

    let x = 100;
    let y = 100;
    
    값 100의 주소값은 0x123
    
    x의 주소 값은 0x111, 주소값 0x111 메모리에 담겨 있는 것은 0x123이라는 위치
    y의 주소 값은 0x112, 주소값 0x112 메모리에 담겨 잇는 것은 0x123이라는 위치

     

    9. 객체 타입

     - 자바스크립트를 이루고 있는 거의 모든 것이 객체

     - 상단 6가지 타입 외에는 모두 객체 타입이다.

     

    10. 데이터 타입의 필요성

     - 데이터 타입이 필요한 이유는 메모리에 값을 저장할려면 먼저 확보해야할 메모리 크기를 결정해야함

     - 타입에 따라 메모리의 낭비와 손실 없이 값을 저장할 수 있기때문이다.

     - 참 의문인게 number는 부동소수점 형식을 따르는데 문자는 표준화가 안되었다는게 의문 (제조사 마다 다름)

     - 그런데 데이터타입을 강조하는것도 더 의문

     

     - 숫자는 8바이트 단위로 메모리를 잡아서 효율적으로 메모리 이용 ( 64비트 0000 0000 0000 0000 ..... 0000 0000 )

     - 메모리에 저장된 값이 0100 0001 이면 숫자로는 65지만 문자열로 해석하면 'A' 그러므로

     - 변수를 선언할때 문자열인지 숫자인지 잘 정해줘야한다.

     

    11. 동적 타입 언어, 정적 타입 언어

     - 다른 언어들은 정적 언어 타입이라 하여 string(문자열), int(정수), float(실수), unsigned int(양의 정수) 타입을 

     - 변수 선언과 동시에 타입을 정해줘야한다.

     

     - js는 동적 언어 타입이라 하여 변수가 지정 된 후 타입을 결정한다 (파이썬, 루비, js 등이 있음)

     - 동적 언어 타입이 편하기는 하지만 코드가 길어질 수록 값 100이 숫자인지 문자열인지 언제 다시 파악하는가...

     

     - 동적 언어는 편리한 타입 지정으로 인해 신뢰성은 하락하지만

     - 정적 언어는 정확한 타입 지정으로 코드의 신뢰성이 상승한다. (타입의 일관성 강제)

     

     - 그러므로 우리가 사용하는 js에서 변수를 사용할때의 주의사항

     - 변수의 사용을 최소화 할 것

     - 변수를 사용했으면 해당 변수의 사용범위를 최소화 할 것

     - 전역 변수 사용을 자제할 것

     - 변수 보다는 상수 값을 사용할 것 (const - 변하지 않는 값)

     - 변수 이름을 명확하게 지을 것 (ex - button_name) 

     

    - 가독성 좋은 코딩하기 화이팅

Designed by Tistory.