Javascript

[JS]변수, 표현식과 문, 데이터타입, 타입 변환 - 타입 변환이 필요할 때

popeyes 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가 숫자인지 아닌지를 체크할 수 있다는 것이다.

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