22/07/01 학습내용 정리
자바스크립트에서 모든 값은 특정한 자료형으로 분류된다.
기본 자료형은 총 8개가 있다.
숫자형(number)은 정수와 소수를 포함한다.
Infinity
, -Infinity
, NaN
와 같은 특수 숫자값도 포함된다.
Infinity
는 무한대를 나타낸다.alert( 7 / 0 ); // Infinity
NaN
은 숫자가 아닌 값에 숫자의 계산식을 사용하면 반환되는 값이다.alert( "apple" / 4 ); // "apple"은 문자형 값임
(2의 53승-1)(9007199254740991) 보다 큰 값 혹은 -(2의 53승-1) 보다 작은 정수는 '숫자형’을 사용해 나타낼 수 없다.
사실 이렇게 큰 숫자는 일반적인 환경에선 다룰 일이 없기 때문에 문제가 되진 않지만, 암호화폐와 같은 정밀함을 요하는 아주 큰 숫자가 필요한 개발환경에선 쓰일 수 있다.
BigInt
형은 정수 끝에 n
을 붙이면 된다.
const iAmBigInt = 987654321012345678909999999955151511233344444n;
문자열(string)
은 ""(큰따옴표) 혹은 ''(작은따옴표)로 묶어서 나타낸다.
let name = 'John';
name = "Kate";
`(백틱, 역따옴표)를 사용하면 문자열 중간에 원하는 변수나 표현식을 자유롭게 넣을 수 있다.
let name = 'Mincheol';
alert( `Nice to meet you ${name}!` ); // Nice to meet you Mincheol
alert( `계산 결과는 ${2 + 5}입니다.` ); // 계산 결과는 7입니다.
이러한 ${}
를 활용한 변수와 표현식의 삽입은 `(백틱)을 사용했을 때만 가능하다는 것을 주의하자.
불린형은 true
와 false
두 가지 값만 나타냅니다.
true
는 사실, 긍정을
false
는 거짓, 부정을 나타냅니다.
let isFeterSmart = false;
주로 논리연산을 할 때 쓰입니다.
let test = (5 > 2);
alert(test); // true
null
값은 오로지 null만을 포함하는 자료형을 따로 갖고있다.
null
은 '비어있는(empty)', '알수없는(unknown)', '존재하지않는(nothing)'등을 나타냅니다.
let age = null; // 나이를 알 수 없음, 혹은 비어있음
존재하지 않다고 해서 변수에 값이 없다는 뜻이 아니다.
값은 할당되어 있는데 그 값이 null인 거다.
undefined
값도 undefined만을 포함하는 자료형을 갖고있다.
undefined
값은 뜻 그대로 '값이 할당되지 않음'을 나타낸다.
변수는 선언했지만 해당 변수에 값을 아직 할당하지 않았을 때, 해당 변수는 undefined
값이 할당되어있다.
let name;
alert(name); // undefined
개발자가 변수에 명시적으로
undefined
를 할당하는 것도 가능하다.
하지만 이는 권고사항이 아니므로 변수가 '비어있거나' '알 수 없는' 상태임을 나타내고 싶을 때는null
을 써주자.
좀 더 배우고 추가예정
typeof
는 연산자로, 인수의 자료형을 반환한다.
특정 값의 자료형을 알고 싶을 때 사용한다.
typeof 0 // number
typeof 1123561251235n // bigint
typeof "hi" // string
typeof undefined // undefined
typeof true // boolean
typeof alert // function (1)
typeof null // object (2)
(1) typeof의 피연산자가 함수면 function
을 반환한다. 하지만 함수형이란 자료형은 없다. 함수는 객체형에 속한다. 이는 오래전 자바스크립트 규칙에 의한 작동방식인데 호환성 유지 때문에 없애지 않고 이러한 방식이 그대로 남아있다.
(2) null
은 null만을 위한 별도의 자료형을 가지기 때문에 객체형(object)가 아니다. 그럼에도 값이 이렇게 나오는 이유는 (1)처럼 호환성 유지 때문에 오류를 수정하지 않았기 때문이다.