ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Modern JavaScript 데이터타입과 변수
    FrontEnd/JavaScript 2023. 1. 9. 21:36

    1. 데이터타입과 변수

     

     

    • 변수 : 메모리상의 주소를 기억하는 저장소 (address)
    • 동적타이핑 : js는 동적타입 언어로 변수의 타입지정 없이 값이 할당되는 과정에서 자동으로 변수타입이 결정된다.
    • 원시타입 : 변경 불가능한 값, 값에 의한 전달

     

    - Number : 모든 수를 실수로 처리

    - Infinity   : 양의 무한대  / -Infinity : 음의 무한대

    - NaN       : 산술연산 불가

    - String    : js 특징으로 일부 문자를 변경할 수 없다. (새롭게 문자열을 할당해야한다.)

    - Boolean : false / true

    - Undefined 

    - Null

    - Symbol : 이름의 충돌을 줄이기 위해 유일한 객체 프로퍼티 키를 만들어 사용 (object의 프로퍼티가 많을때 같은 프로퍼티를 추가하여 생기는 코드오류 방지)

    let obj = { 
      name: "cy"
    };
    
    let id = Symbol("id");
    
    obj[id] = 1;
    
    console.log( obj[id] )

     

     

    Tip) Typeof 연산자로 값 타입 확인 가능

             Null 타입 확인시 일치연산자 ‘===‘사용

     

     


     

    2. const / let / var 차이점

    • let      : update 허용
    • const : update 허용 x
    • var     : 이전의 js 에서 쓰던 방식으로 update 가 어디서든 가능, 데이터가 보호 받기 힘듬 (실수로 연산해도 알려주지 않음)  

     


     

    3. var 문제점

     

    • 함수레벨 스코프 : 전역변수 남발
    • 키워드생략허용 : 의도치않은 변수 전역화
    • 중복 선언 허용
    • 변수 호이스팅 : 변수 선언전 참조 가능
    • 이를 보완하기 위해 Let / const 키워드가 도입

     


     

    4. 호이스팅 

     

    • 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성-위치와 상관없이 어디서든 호출가능
    • 함수 선언문으로 정의된 함수는 엔진이 스크립트를 로딩하는 시점에 바로 초기화하고 VO에 저장한다. (선언, 초기화, 할당 한번에 이루어짐)
    • 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성 (위치와 상관없이 어디서든 호출가능)
    • 함수 선언문으로 정의된 함수는 엔진이 스크립트를 로딩하는 시점에 바로 초기화하고 VO에 저장한다. (선언,초기화,할당 한번에 이루어짐)

     

    - 선언단계 : 변수개게 변수에 등록, 객체는 스코프 참조 대상

    - 초기화단계 : 등록된 변수에 메모리 할당 변수는 undifined로 초기화

    - 할당단계 : undifined로 초기화된 변수에 실제값 할당

     

    //함수 표현식에서 정의

    var res = square(5); // TypeError: square is not a function

    var square = function(number) {

          return number * number;

    }

     


     

    5. Scope

    • 함수레벨 스코프 : 함수내에 선언된 변수는 함수내에서만 유효 (지역변수)
    • 블록레벨 스코프 : 코드 블록내에 선언된 변수는 블록내에서만 참조

     

    참고 : https://isaac-yoon.tistory.com/9

     


     

    6. 타입변환과 단축평가

    • 명시적 타입 변환

           var x = 10;

           var str = x.toString();                // 숫자를 문자열로 타입 캐스팅한다.

           console.log(typeof str);           // string

     

    • 암묵적 타입 변환 : 숫자 타입 x의 값을 바탕으로 새로운 문자열 타입의 값을 생성해 표현식을 평가

           var str = x + '';

           console.log(typeof str, str);    // string 10

           console.log(x);                         // 10 변수 x의 값이 변경된 것은 아님

     

    • 문자열 타입 변환

            숫자 타입 => 문자열 타입       

            String 생성자 함수를 new 연산자 없이 호출하는 방법

            console.log(String(1));                  // "1"

           

            Object.prototype.toString 메소드를 사용하는 방법        

            console.log((1).toString());         // "1"

             

            문자열 연결 연산자를 이용하는 방법        

            console.log(1 + '');                       // "1"

     

    • 숫자타입변환

           문자열 타입 => 숫자 타입       

            Number 생성자 함수를 new 연산자 없이 호출하는 방법 

            console.log(Number('0'));         // 0

            

            parseInt, parseFloat 함수를 사용하는 방법(문자열만 변환 가능)

            console.log(parseInt('0'));       // 0

           

            + 단항 연결 연산자를 이용하는 방법 

            console.log(+'0');                     // 0

           

           * 산술 연산자를 이용하는 방법 

           console.log('0' * 1);                    // 0

     

    • 불린타입변환

           문자열 타입 => 불리언 타입

           Boolean 생성자 함수를 new 연산자 없이 호출하는 방법

           console.log(Boolean('x'));       // true

           

           ! 부정 논리 연산자를 두번 사용하는 방법

           console.log(!!'x');       // true

     

     

     

     
     
     
     
     
     

     

     

    'FrontEnd > JavaScript' 카테고리의 다른 글

    Modern JavaScript 객체의 프로퍼티  (0) 2023.01.21
    Modern JavaScript 함수  (0) 2023.01.21
    Modern JavaScript 객체  (0) 2023.01.21
    Modern JavaScript 연산과 제어  (0) 2023.01.15
    Modern JavaScript 기본개념  (0) 2023.01.01

    댓글

Designed by Tistory.