Javascript 기초 (5) 자료형, typeof연산자

코린이서현이·2023년 7월 27일
0

🔥오늘의 목표🔥

일반적으로 배웠던 프로그래밍언어의 자료형과는 조금 다른 점이 있다. 
또한 변수에 저장되는 값의 타입을 언제든지 바꿀 수 있다는 특징을 가지고 있다. 
그런 점에 유의하며 자바스크립트의 자료형에 대해서 배워보자.

📕 자료형

⚠️ 자바스크립트에서 변수는 자료형과 상관없이 데이터를 가질 수 있다.
따라서 변수는 문자열을 저장했다가 숫자형을 저장할 수 있다.
자바스크립트는 동적타입언어이다.

동적타입
자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 말한다.

  // no error
  let message = "hello";
  message = 123456;

📖 숫자형

자바스크립트는 정수와 실수를 구분하지 않고 같은 숫자형으로 나타낸다.
추가적으로 일반적인 숫자말고도 숫자형으로 구분되는 Infinity, -Infinity, NaN 이 있다.

  • Infinity-Infinity
    무한대를 나타내며, 숫자형을 0으로 나눴을 때 무한대가 나타난다.
    직접 참조도 가능하다.
  • NaN
    계산 중에 에러가 발생했다는 것을 나타내주는 값이다. 문자열을 숫자로 나누는 것 처럼 정의되지 않는 수학 연산에 발생한다. NaN은 추가 연산을 해도 NaN이다.

📖 BigInt형

자바스크립트에서는 (253-1)(9007199254740991) 보다 큰 값 혹은 -(253-1) 보다 작은 정수는 '숫자형’을 사용해 나타낼 수 없다.

따라서 이것보다 더 큰 숫자를 나타내고 싶으면 BigInt를 이용해야한다.

BigInt형 값은 정수 리터럴 끝에 n을 붙이면 만들 수 있다.

  // 끝에 'n'이 붙으면 BigInt형 자료입니다.
  const bigInt = 1234567890123456789012345678901234567890n;

📖 문자형

자바스크립트에서는 문자형을 따옴표로 표현한다.
모든 따옴표가 동일하게 작동하지는 않고, ${ }을 처리하는 방식에서 차이점이 있다.

  • ''""
    변수나 표현식을 넣고 싶을 때에는 문자열 연산자 +를 사용한다.
    ⚠️ 다만 수학관련 표현식은 괄호를 사용해 넣어야한다. 문자열 연산자로 취급하는 듯 함.

  • ``
    중간에 변수나 표현식을 ${ }안에 넣을 수 있다.
    따옴표처럼 특수 기호를 그대로 출력한다. (특수문자가 기능하지 않고 그대로 출력된다.)

  let name = "John";

  // 변수를 문자열 중간에 삽입
  alert( `Hello, ${name}!` ); 			// Hello, 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 12 (1과 2를 문자열로 처리)
  alert( "the result is "+ 1 - 2 ); 	// NaN
  alert( "5"+ 1 - 2 ) 					// 49 
  alert( "the result is "+ (1 + 2) ); 	// the result is 3

🔍 특수문자

문자열의미
\'작은 따옴표
\"큰 따옴표
\\ 백슬래시
\b백스페이스
\f폼 피드
\n줄 바꿈
\r캐리지 리턴
\t가로 탭
\ddd8진수 문자열(ddd는 3자리 숫자)
\xdd16진수 문자열(dd는 2자리 숫자)
\udddd유니코드 문자열(dddd는 4자리 16진수 숫자)

특수문자를 그대로 출력하고 싶을 때는 특수문자앞에 \을 붙여주면된다. 문자열에서 더 상세히 다루겠음.

📖 Boolean형

truefalse 두 가지 값밖에 없는 자료형이다.
⚠️ 문자열이 아니기 때문에 "true"와 true는 다른 값이다.

📖null

다른 프로그래밍언어에서 쓰이는 null하고는 의미가 다르다.
명시적으로 알 수 없는 값, 비어 있는 값, 존재하지 않는 값을 정의하는데 쓰인다.

	let age = null;	//age를 알 수 없다는 뜻

📖 undefined

값이 할당되지 않은 상태를 나타낼 때 사용한다.
명시적으로 사용하기보다 변수에 아무것도 할당하지 않았을 때 자동으로 할당된다.

	let age;
	alert(age); // 'undefined'가 출력됩니다.

📖 객체형

원시형이 아니며 특수한 자료형이다. 추후에 다루겠다.

📖 심볼형

객체의 고유한 식별자를 만들 때 사용하고 추후에 다른다.

📕 typeof연산자

  • 인수의 자료형을 반환한다.
//연산자로 사용
typeof x
//함수로 사용
typeof(x)

어떻게 쓰던 결과는 동일하다.

📒 더 알아보기

typeof null
결과는 "object"이다. 객체형은 아니지만 하위호환성을 위에 "object"로 출력하며 객체가 아니다.
typeof alert
결과는 "function"이다. 함수형이라는 자료는 없지만 하위호환성을 위해 "function"을 출력한다. 실제로 유용하게 쓰인다고 한다.


🔥마무리하며🔥

문자열 포함식이 복잡하게 느껴질텐데 역시 가장 좋은 방법은 결과를 헷갈리게 코드를 짜지 말고
명시적으로 정확하게 작성하는 것이 좋다. 
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글