ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS]변수, 표현식과 문, 데이터타입, 타입 변환 - 타입 변환이 필요할 때
    Javascript 2024. 4. 14. 13:50

     

    변수

     

    메모리 공간에 값을 식별할 수 있는 고유한 이름을 '변수 이름' = 식별자

    변수에 저장된 값을 변수 값

    변수에 값을 저장하는 것을 할당

    변수에 저장된 값을 읽어 들이는 것을 참조

     

    console.log(score) // undefined
    
    var score; // 변수 선언문


    첫 줄에서 참조에러가 발생해야 하는데 undefined가 발생하는 이유는 호이스팅 때문!

     

     

     

    표현식과 문

    **문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위

    토큰이란 문법적인 의미를 가지며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소

     

    문에는 표현식인 문과 표현식이 아닌 문이 있다.

    표현식인 문은 값으로 평가될 수 있는 문이고, 표현식이 아닌 문은 그렇지 않은 문이다.

    예를 들어, 변수 선언문은 표현식이 아니다.

    할당문은 표현식이다.

     

     

     

    데이터 타입

     

    원시 타입 중

    undefiend => var 키워드로 선언된 변수에 암묵적으로 할당되는 값

    null => 값이 없다는 것을 의도적으로 명시할 때 사용하는 값

     

     

    **데이터 타입이 필요한 이유

    1. 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해

    2. 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결졍하기 위해

    3. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

     

     

     

    타입 변환

     

    **타입 변환이 필요할 때

     

    다음은 예전 우테코 프리코스 문제 중 친구의 로또추첨기 코드 중 일부이다.

     

    class Validator {
        static amount(callback){
            return (amount) => {
                if (amount.trim().length === 0 || isNaN(Number(amount-0))) { 
                    throw new Error(NOT_NUMBER);
                }
                
                callback(amount); 
            }
        }

     

     

    amount에 -0을 해주는 이유가 뭘까?

    처음 도전했을 때는 아무리 봐도 이유를 알지 못했다.

    그러나 -0을 붙여주는 순간, 문자열이 숫자로 반환된다는 것을 알게 되었다.

     

    amount가 숫자로 반환이 된다면 true를 반환, 그렇지 않다면 NaN을 반환하게 될 것이고,

    이 때문에 -0을 붙이는 것이 amount가 숫자인지 아닌지를 체크할 수 있다는 것이다.

    어떻게 보면 꼼수일지 모르지만, 굉장히 유용할 수 있을 것 같다.

     

Designed by Tistory.