자바스크립트 기본 - 자료형

devheyrin·2022년 4월 12일
0

modern javascript

목록 보기
5/26

자바스크립트에서 값은 항상 문자열이나 숫자형 같은 특정한 자료형에 속한다. 자바스크립트에는 여덟가지 기본 자료형이 있다.

자바스크립트의 변수는 어떤 순간에는 문자열일 수도, 다른 순간에는 숫자가 될 수도 있다. 이처럼 자료의 타입은 있지만, 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입'언어라고 부른다.

숫자형

숫자형은 정수 및 부동소수점 숫자를 나타낸다.

일반적인 숫자 외에 Infinity, -Infinity, NaN 같은 특수 숫자 값도 숫자형에 포함된다.

alert( 1 / 0 ); // Infinity
alert(Infinity); // Infinity
alert(Infinity-Infinity); // NaN 

NaN은 Not a Number 라는 뜻으로, 계산 중 에러가 발생했음을 나타내주는 값이다. 부정확하거나 정의되지 않은 연산을 사용하면 계산 중 에러가 발생하는데 이때 NaN이 반환된다.

alert("숫자가 아님" / 2); // NaN, 문자열을 숫자로 나누면 오류가 발생

NaN은 어떤 추가 연산을 해도 NaN 을 반환한다.

alert("숫자가 아님" / 2+5); // NaN 

자바스크립트에서는 0으로 나누거나 숫자가 아닌 문자열을 숫자로 취급하는 연산을 해도 에러를 내고 종료되지 않으며, 대신 NaN을 반환하며 연산이 종료된다.

BigInt

자바스크립트에서는 25312^{53} - 1(9007199254740991) 보다 큰 값 혹은 (2531)-(2^{53}-1) 보다 작은 정수는 숫자형으로 나타낼 수 없다.

암호 관련 작업같이 아주 큰 숫자가 필요하거나 아주 높은 정밀도로 작업할 때는 문제가 될 수 있다. BigInt 는 표준으로 채택된지 얼마 안 된 자료형으로, 길이에 상관없이 정수를 나타낼 수 있다. 정수 표현 끝에 n을 붙이면 만들 수 있다.

const bigInt = 1234567890123456789012345678901234567890n; 

문자열

문자열은 따옴표로 묶는다.

  1. 큰따옴표: "Hello"
  2. 작은따옴표: 'Hello'
  3. 역 따옴표(백틱, backtick): `Hello`

큰따옴표와 작은따옴표는 ‘기본적인'따옴표로, 자바스크립트에서는 둘에 차이를 두지 않는다!

역 따옴표의 경우 ${변수 or 표현식} 처럼 문자열 중간에 변수나 표현식을 쉽게 넣을 수 있다.

불린형

불린형(논리 타입)에는 true 와 false 두 가지 값밖에 없다.

긍정/부정을 나타내는 값을 저장할 때 사용한다.

let nameFieldChecked = true; // 네, name field가 확인되었습니다(checked).
let ageFieldChecked = false; // 아니요, age field를 확인하지 않았습니다(not checked)

비교 결과를 저장할 때도 사용한다.

let isGreater = 4 > 1;

alert( isGreater ); // true (비교 결과: "yes")

null 값

null은 어느 자료형에도 속하지 않으며, 오로지 null 값만을 포함하는 별도의 자료형을 만든다.

다른 언어에서 null 은 ‘존재하지 않는 객체에 대한 참조’나 ‘널 포인터'를 나타낼 때 사용한다. 하지만 자바스크립트에선 ‘존재하지 않는’값, ‘비어 있는' 값’, ‘알 수 없는' 값을 나타내는 데 사용한다.

let age = null; 은 나이(age)를 알 수 없거나 그 값이 비어있음을 보여준다.

undefined 값

null 과 마찬가지로 자신만의 자료형을 형성한다.

undefined 는 ‘값이 할당되지 않은 상태'를 나타낼 때 사용한다.

변수를 선언했지만, 값을 할당하지 않았다면 해당 변수에 undefined 가 자동으로 할당된다.

let age;

alert(age); // 'undefined'가 출력

명시적으로 undefined 를 할당하는 것도 가능하지만, 권장되지는 않는다.

변수가 ‘비어있거나' ‘알수 없는' 상태임을 나타낼 때는 null 을 사용하는 것이 좋다. undefined 는 값이 할당되지 않는 변수의 초기값을 나타내기 위한 예약어로 남겨두자.

객체와 심볼

객체형은 특수한 자료형으로, 데이터 컬렉션이나 복잡한 개체를 표현할 수 있다.

심볼형은 객체의 고유한 식별자를 만들 때 사용한다.

typeof 연산자

인수의 자료형을 반환하는 함수이다. 자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고 싶을 때 사용한다.

다음과 같이 두 가지 형태의 문법을 지원한다.

  1. typeof age
  2. typeof(age)
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)
  1. Math 는 수학 연산을 제공하는 내장 객체이므로 object 가 출력된다.
  2. null 은 별도 자료형을 가지는 특수 값으로 객체는 아니다. 하지만 하위 호환성을 유지하기 위해 오류를 수정하지 않고 남겨둔 상황이다. null은 객체가 아니라는 것만 기억하자!!
  3. 피연산자가 함수이면 function 이 반환된다. 그러나 ‘함수'자료형은 따로 존재하지 않는다. 함수는 객체에 속한다. 초기 자바스크립트의 오류가 남아 있는 상황이지만, 실무에서는 유용하게 사용되기도 한다.
profile
개발자 헤이린 🔜 프로덕트 매니저로 나아가는 중!

0개의 댓글