자바스크립트는 여덟 가지의 기본 자료형이 있다.
자바스크립트의 변수는 자료형에 관계없이 모두 var
, let
, const
중 하나로 선언할 수 있다.
따라서 변수는 문자열일수도 있고 숫자일수도 있음!
다만 const
는 재선언, 재할당 불가하다
// 변수에 문자열로 선언했다가 숫자로 재할당할 수 있음.
let msg = "hello world";
msg = 123456;
💡 이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입(dynamically typed)’ 언어라고 부릅니다.
Java 같은 경우는 int 변수, String 변수 등 해당하는 형으로 일일이 다르게 선언해주야 하지만 자바스크립트는 일단 모든 변수를 공통적으로 var나 let으로 선언 가능하다.
위에서 이야기했듯이 변수 선언 후 재할당할 때 형변환이 가능!
var 변수 = parseInt(문자); //문자를 정수형 숫자로 변환해줌
var 변수 = parseFloat(문자); //문자를 실수형 숫자로 변환해줌
var 변수 = Nember(문자); //문자를 정수&실수형 숫자로 변환해줌
'=='와 '===' 연산자의 주된 차이점을 알아보기 위해 예를 들자면 숫자를 숫자 리터럴과 비교하면, '=='는 그것을 허용하지만, '===' 두 변수의 형식은 동일하지 않은 경우 값뿐만 아니라 두 변수의 유형도 확인하므로 허용하지 않는 것이다. 즉, '==='는 'false'으로 반환하고, '=='는 'true'로 반환한다.
💡 '==' 를 사용하다보면 의도치않게 데이터타입이 바뀌어 있을 수 있으므로 더 엄격한 일치연산자인 '===' 을 사용하는 습관을 들이자!
실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음.
동적(dynamic) 타입 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다.
이러한 불편함을 해소하기 위해 TypeScipt나 Flow 등을 사용할 수 있습니다.
변수를 선언하고 값을 할당하지 않은 상태, null은 변수를 선언하고 빈 값을 할당한 상태(빈 객체)이다. 즉, undefined는 자료형이 없는 상태이다.
따라서 typeof를 통해 자료형을 확인해보면 null은 object로, undefined는 undefined가 출력되는 것을 확인할 수 있다.
어떤 값이 의도적으로 비어있음을 표현한다. undefined는 값이 지정되지 않은 경우를 의미하지만, null의 경우에는 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다.
💡 undefined는 값을 할당해 달라는 의미, null은 텅 비어있는 유니크한 값!
다음 포스팅에서 JS 특성에 대해 이어서 다루겠습니다. 🔜 🔜 🔜