JavaScript 2.5
자료형
- 자바 스크립트에는 여덟가지 기본 자료형이 있다.
- 자바 스크립트의 변수는 자료형에 관계없이 모든 데이터일 수 있다.
- 따라서 변수는 어떤 순간에 문자열일 수 있고 다른 순간에는 숫자가 될 수도 있다.
- 이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입’ 언어라고 부른다.
숫자형
- 숫자형은 정수 및 부동소수점 숫자를 나타낸다.
- 숫자형엔 일반적인 숫자 외에 Infinity, -Infinity, NaN 같은 특수 숫자값이 포함된다.
- 인피니티는 어떤 숫자보다 큰 특수 값, 무한대를 나타낸다.
- 어떤 숫자든 0으로 나누면 무한대를 얻을 수 있다.
- 인피니티를 직접 참조할 수도 있다.
- NaN은 계산 중에 에러가 발생했다는 것을 알려주는 값이다.
- 부정확하거나 정의되지 않은 수학 연산을 사용했을 때 에러가 발생하면 NaN이 반환된다.
- 인피니티는 어떤 숫자보다 큰 특수 값, 무한대를 나타낸다.
BigInt
- 자바 스크립트에서는 (2의 53승 -1)(9,007,199,254,740,991) 보다 큰 값 혹은 -(2의 53승 -1)보다 작은 정수는 숫자형을 사용해 나타낼 수 없다.
- BigInt는 길이에 상관없이 정수를 나타낼 수 있다.
- BigInt형 값은 정수 리터럴 끝에 n을 붙이면 만들 수 있다.
// 끝에 'n'이 붙으면 BigInt형 자료입니다.
const bigInt = 1234567890123456789012345678901234567890n;
- 호환성 이슈가 있다.
- Firefox, Chrome, Edge에서만 지원한다.
문자형
- 자바 스크립트에선 문자열을 따옴표로 묶는다.
- 따옴표에는 세 종류가 있다.
- 큰 따옴표 : “Hello”
- 작은 따옴표 : ‘Hello’
- 역 따옴표(백틱) :
Hello`
let name = "John";
// 변수를 문자열 중간에 삽입
alert( `Hello, ${name}!` ); // Hello, John!
// 표현식을 문자열 중간에 삽입
alert( `the result is ${1 + 2}` ); // the result is 3
- 큰 따옴표나 작은 따옴표를 사용하면 중간에 표현식을 넣을 수 없다.
- 이 방법은 역 따옴표를 써야만 가능하다.
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (큰따옴표는 확장 기능을 지원하지 않습니다.)
불린형
-
불린형은 true 와 false 두 가지 값밖에 없는 자료형인다.
-
비교 결과를 저장할 때도 사용된다.
null 값
-
null 값은 오로지 null 값만 포함하는 별도의 자료형을 만든다.
-
자바 스크립트에서는 null을 존재하지 않는 값, 비어있는 값, 알 수 없는 값을 나타내는데 사용한다.
undefined 값
- undefined 값도 null 값처럼 자신만의 자료형을 형성한다.
- 값이 할당되지 않은 상태를 나타낼 때 사용한다.
- 변수는 선언했지만 값을 할당하지 않았다면 해당 변수에 undefined 가 자동으로 할당된다.
let age;
alert(age); // 'undefined'가 출력됩니다.
- 개발자가 변수에 undefined를 할당하는 것도 가능하지만 직접 할당하는 것은 권장되지 않는다.
객체와 심볼
- 객체형을 제외한 다른 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있다.
- 반면 객체는 데이터 컬렉션이나 복잡한 개체를 표현할 수 있다.
- 심볼 형은 객체의 고요한 식별자를 만들 때 사용된다.
typeof 연산자
- 인수의 자료형을 반환한다.
- 자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고자 할 때 유용하다.
- 두 가지 형태의 문법을 지원한다.
- 연산자 : typeof x
- 함수 : typeof(x)
- 괄호가 있든 없든 결과는 동일하다.
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
- Math는 수학 연산을 제공하는 내장 객체이므로 object 가 출력된다.
- typeof null의 결과는 object이다. 언어상 오류지만 하위 호환성을 위해 수정하지 않았다.
- typeof는 피연산자가 함수면 function을 반환한다. 형식적으로는 잘못된 방식이지만 하위 호환성을 위해 남겨졌다.