#back_to_basic
다시 처음부터!라는 마음으로 공부해보자
1. 자료형
자바스크립트에서 값은 항상 문자열이나 숫자형 같은 특정한 자료형에 속한다.
자바스크립트에서의 변수는 자료형에 관계없이 모든 데이터일 수 있다. 즉 문자가 될 수도 있고, 숫자가 될 수도 있다.
이처럼 자료의 타입은 있지만, 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 '동적 타입(dynamically typed)'언어라고 부른다.
(1) 숫자형
숫자형은 정수 및 부동소수점 숫자(floating point number)를 나타낸다.
이 숫자형엔 일반적인 숫자 외에도 infinity, -infinity, NaN같은 특수 숫자 값이 포함된다.
❓ NaN
계산 중에 에러가 발생했다는 것을 나타내주는 값이다. 부정확하거나 정의되지 않은 수학 연산을 사용하면 계산 중에 에러가 발생하는데, 이때 NaN이 반환된다.
(예, 0으로 나누기)
즉, 자바스크립트에서는 특이하게도, 치명적인 에러를 내뿜으며 죽지 않고, 단순히 NaN을 반환하며 연산이 종료될 뿐이다. 그래서 공식문서에서는 '자바스크립트에서 행해지는 수학 연산은 안전하다고 볼 수 있다'고 한다.
(2) BigInt
내부 표현 방식때문에 자바스크립트에서는 범위가 넘는 값은 숫자형을 사용해 나타낼 수 없는데, 이 경우에 사용한다.
정수 리터럴 끝에 n을 붙이면 만들 수 있다.
(3) 문자형
따옴표로 묶어지는 값이다.
자바스크립트에서는 큰 따옴표와 작은 따옴표를 구분하지 않고, 모두 사용 가능하다.
역 따옴표로 변수나 표현식을 감싼 후에 ${...} 안에 넣어주면, 아래와 같이 원하는 변수나 표현식을 문자열 중간에 쉽게 넣을 수 있다.
(4) 불린형(논리 타입)
true와 false 두가지 값밖에 없는 자료형이다.
(5) null 값
null은 위의 자료형들 중 어느 자료형에도 속하지 않는 값이다.
오로지 null 값만 포함하는 별도의 자료형인데, 다른 언어에서는 '존재하지 않는 객체에 대한 참조'나 '널 포인터'를 나타낼 때 사용하지만,
자바스크립트에서는 '존재하지 않는 값', '비어있는 값', '알 수 없는 값'을 나타낼 때 사용한다.
예를 들어, let age = null;이라고 되어있다면, 이는 age를 알 수 없거나 그 값이 비어있음을 의미한다.
(6) undefined 값
null과 마찬가지로 자신만의 자료형을 형성한다.
undefined는 '값이 할당되지 않은 상태'를 나타낼 때 사용한다. 즉, 변수는 선언했지만, 값을 할당하지 않았다면 해당 변수에 undefined가 자동으로 할당된다.
개발자가 변수에 undefined를 명시적으로 할당할 수도 있지만, 권장되지는 않는다.
변수가 '비어있거나', '알 수 없는' 상태라는 것을 나타내려면 null을 사용하라고 권장된다.
(7) 객체
객체(object) 형은 특수한 자료형이다.
객체형을 제외한 다른 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있기 때문에 원시(primitive) 자료형이라 불린다.
하지만 객체는 데이터 컬렉션이나 복잡한 개체를 표현할 수 있다.
(8) 심볼
심볼은 객체의 고유한 식별자를 만들 때 사용된다.
이러한 자료형은 typeof를 사용하여 자료형이 무엇인지 알 수 있다.
마지막 세줄에 대한 설명을 해보자면,
1. Math는 수학 연산을 제공하는 내장 객체이므로 object가 출력된다.
2. null의 자료형이 object로 나오는데, 이는 하위 호환성을 유지하기 위해 일부러 언어 자체의 오류로 두었다.
3. typeof alert가 function으로 나왔는데, 함수는 결국 객체형에 속한다. 이 또한 호환성 유지를 위해 남겨진 상태이다.
References
화이팅이다! 행운을 빈다!
'Web' 카테고리의 다른 글
[BB] JavaScript: var, let, const의 차이 (0) | 2023.10.25 |
---|---|
[BB] Javascript: 실행 컨텍스트와 스코프 (0) | 2023.10.24 |
[BB] CSS와 곁들여 보는 DOM (0) | 2023.10.24 |
[BB] Javascript이란 (0) | 2023.10.23 |
[BB] 좋은 주석과 JavaScript 변수 type (0) | 2023.07.07 |