변수의 타입에는 숫자형 문자형 등 형태에 따른 분류가 있었다.
이 개념과는 다르게 이 변수의 값을 어디서 불러 오는가를 기준으로 타입을 나눌 수 있다.
이번 글에서는 데이터의 형태에 따른 타입이 아닌 데이터를 어떻게 불러오는지를 기준으로 나눈 타입에 대해서 알아보려고 한다.
변수가 그 값을 어디서 불러오는가에 따라 출력값이 달라지기 때문에
변수를 선언하고 그 변수를 잘 활용하기 위해서는 그 변수가 어떤 타입의 자료형인지 아는 것이 매우 중요하다.
자료의 형태에 따른 타입을 설명한 글에서 원시타입을 설명한 바가 있다.
이 자료형은 객체가 아니면서 메소드를 갖지 않는 6가지의 타입이다.
간단히 종류만 설명하자면 아래와 같다.
string, number, bigint, boolean, undefined, symbol,
(null은 원시 타입과 거의 같게 사용되지만 엄밀히 따지면 객체이다. 빈 참조를 나타내는 데 자주 사용됨)
number : 3.141592
string : ‘Hanamon’
boolean : true & false
undefined : 변수가 정의되지 않았거나 값이 없다.
null : 의도적으로 비어있음을 표현하기 위해 null 이라는 것이 들어있다.
symbol
이 원시자료형이 할당 될 때에는 변수에 값 자체가 담기게 된다.
선언된 변수에 있는 메모리에 직접적으로 접근한다.
원시타입을 복사하여 가져올 경우 참조형태가 아니기때문에 복사한 값에 변형을 줘도 처음 할당된 값에 영향을 미치지 않는다.
보통 let과 const로 선언하여 그 안에 할당하는데 const로 선언했을 경우 재할당은 불가능하다.
원시자료를 제외한 모든 것들을 참조자료형으로 구분한다.
원시형 외의 모든 변수가 참조자료가 되지만 종류를 나열 해 보면 아래와 같다.
array : 배열형태
ex ) [a, b, c]
object : 객체 형태
ex ) { a : 1, b : 2, c : 3 }
💡 배열의 타입을 검사할 경우 배열도 `object` 로 나오게 된다. 배열인지 여부를 검사 할 때는 isArray를 사용해야한다.function : 함수 형태
ex ) function a () {
return a
}
하나의 변수에 다양한 값을 담을 수 있다.
변수를 선헌 한 후 값을 할당하면 변수의 값이 저장된 heap의 주소를 저장한다.
변수를 선언하고 할당하는 방법과 순서에 따라 원 자료에 영향이 있을수도 있고 없을수도 있기 때문에 사용 시 어떤 변수가 어디로부터 값을 참조해서 가져오는지 정확히 알아야 한다.