자료형과 typeof 연산자

MinCheol-Sin·2022년 7월 1일
1
post-thumbnail

22/07/01 학습내용 정리


자바스크립트에서 모든 값은 특정한 자료형으로 분류된다.

기본 자료형은 총 8개가 있다.

1. 숫자형(number)

숫자형(number)은 정수와 소수를 포함한다.
Infinity, -Infinity, NaN 와 같은 특수 숫자값도 포함된다.

  • Infinity는 무한대를 나타낸다.
    어떤 숫자든 0으로 나누면 무한대다.
alert( 7 / 0 );  // Infinity
  • NaN은 숫자가 아닌 값에 숫자의 계산식을 사용하면 반환되는 값이다.
    계산의 에러를 나타낸다.
alert( "apple" / 4 );  // "apple"은 문자형 값임

2. BigInt형

(2의 53승-1)(9007199254740991) 보다 큰 값 혹은 -(2의 53승-1) 보다 작은 정수는 '숫자형’을 사용해 나타낼 수 없다.

사실 이렇게 큰 숫자는 일반적인 환경에선 다룰 일이 없기 때문에 문제가 되진 않지만, 암호화폐와 같은 정밀함을 요하는 아주 큰 숫자가 필요한 개발환경에선 쓰일 수 있다.

BigInt형은 정수 끝에 n을 붙이면 된다.

const iAmBigInt = 987654321012345678909999999955151511233344444n;

3. 문자형(string)

문자열(string)은 ""(큰따옴표) 혹은 ''(작은따옴표)로 묶어서 나타낸다.

let name = 'John';

name = "Kate";

`(백틱, 역따옴표)를 사용하면 문자열 중간에 원하는 변수나 표현식을 자유롭게 넣을 수 있다.

let name = 'Mincheol';

alert( `Nice to meet you ${name}!` );  // Nice to meet you Mincheol

alert( `계산 결과는 ${2 + 5}입니다.` );  // 계산 결과는 7입니다.

이러한 ${}를 활용한 변수와 표현식의 삽입은 `(백틱)을 사용했을 때만 가능하다는 것을 주의하자.


4. 불린형(boolean)

불린형은 truefalse 두 가지 값만 나타냅니다.
true는 사실, 긍정을
false는 거짓, 부정을 나타냅니다.

let isFeterSmart = false;

주로 논리연산을 할 때 쓰입니다.

let test = (5 > 2);

alert(test);  // true

5. null

null값은 오로지 null만을 포함하는 자료형을 따로 갖고있다.

null은 '비어있는(empty)', '알수없는(unknown)', '존재하지않는(nothing)'등을 나타냅니다.

let age = null;  // 나이를 알 수 없음, 혹은 비어있음

존재하지 않다고 해서 변수에 값이 없다는 뜻이 아니다.
값은 할당되어 있는데 그 값이 null인 거다.


6. undefined

undefined 값도 undefined만을 포함하는 자료형을 갖고있다.
undefined 값은 뜻 그대로 '값이 할당되지 않음'을 나타낸다.

변수는 선언했지만 해당 변수에 값을 아직 할당하지 않았을 때, 해당 변수는 undefined 값이 할당되어있다.

let name;

alert(name);  // undefined

개발자가 변수에 명시적으로 undefined를 할당하는 것도 가능하다.
하지만 이는 권고사항이 아니므로 변수가 '비어있거나' '알 수 없는' 상태임을 나타내고 싶을 때는 null을 써주자.


7. 객체

좀 더 배우고 추가예정


8. typeof

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)처럼 호환성 유지 때문에 오류를 수정하지 않았기 때문이다.

profile
천천히, 그러나 앞으로

0개의 댓글