JavaScript

JavaScript-자료형

도도.__. 2023. 6. 26. 15:07

기본형

  • number(숫자) : 따옴표 없는 숫자를 표기할 때
  • string(문자열) : 따옴표로 묶어 표기할 때
  • boolean(논리형) : 참이나 거짓을 가질 때
  • undefined : 변수만 선언하고 값을 정의하지 않아 자료형이 정해지지 않았을 때
  • null : 값이 유효하지 않을 때

복합형

  • array(배열) : 하나의 변수에 여러 값 저장할 때
  • object(객체) : 함수와 속성이 함께 표기될 때

typeof 연산자

  • 변수 또는 값이 어떤 자료형인지 알고 싶을 때 사용

number(숫자)

  • 자바스크립트에서 정수와 실수 모두 number로 취급한다
  • 자바스크립트는 정수 16자리까지 표현할 수 있다 (넘어가는 순간 오류남)

  • 0.1 + 0.2 = 0.30000000000000004 <-- ??
    • 자바스크립트의 숫자는 항상 64비트 부동 소수점이다. 10진수를 2진수로 변환시켜 저장할 때 64비트를 초과하는 부분은 반올림하여 저장하기 때문에 근사치를 저장한다. 0.1+0.2의 합인 0.3은 무한소수이기 때문에 오차가 발생하고 0.30000000000000004이 나오게 된다.
    • 연산 오류를 해결하기 위해 외부 라이브러리를 사용한다
    • 이런 문제를 방지하기 위해 정수와 실수의 자료형을 다르게 선언하는 언어도 있다.(자바, c언어)
  • undefined <-- ??
    • 맨 위에서 값을 정의 하지 않아 자료형이 정해지지 않았을 때 undefined가 사용된다고 했지만 위 콘솔창에서는 값이 정해졌어도 undefined가 나와서 처음에 오해했다. 하지만 알고 보니 저것은 typeof를 사용해서 나온 자료형이 아닌 그저 var num1 = 1; 에서 반환할 값이 없기 때문에 나오는 undefined였다. 그냥 할 말 없는데 대답은 해야 하니 나오는 느낌..?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

string(문자형)

  • 작은따옴표(')나 큰따옴표(")로 묶은 변수나 값이다
  • 숫자도 따옴표로 묶으면 문자형이다
  • 큰따옴표로 묶은 곳 안에 또 따옴표를 써야 한다면 그때는 작은따옴표를 사용한다

boolean(논리형)

  • 참(true)과 거짓(false)이라는 값을 표현하는 자료형이다

undefined와 null

  • undefined : 처음부터 변수의 값이 할당되지 않음
  • null : 처음에 할당된 값이 더는 유효하지 않음

  • 값이 처음부터 없었던 경우와 더는 없는 경우를 구분한다
  • 변수를 초기화할 때 null을 많이 사용한다

array(배열)

  • 하나의 변수에 여러 값을 저장하는 것

  • 배열을 사용하면 1줄로 줄여 작성할 수 있다
  • 인덱스는 0부터 시작된다
  • 배열의 이름을 사용하면 배열 내용 전체를 가져온다
  • 배열 이름과 대괄호([ ]) 안에 인덱스 숫자를 넣으면 해당 위치의 값만 가져온다  ex) week[0] --> "월"

object(객체)

  • 여러 가료를 중괄호({ })로 묶는다
  • 키(key)와 값(value)을 콜론(:)을 사용하여 한쌍으로 저장한다

자바스크립트 자료형의 특징

  • 느슨한 자료형 체크(Weak Data Type Check) : 자바스크립트처럼 미리 변수형을 지정하지 않는 것
  • 강력한 자료형 체크(Strong Data Type Check) : C언어나 Java와 같이 변수를 선언할 때 변수의 자료형을 미리 지정하는 것.
    • 자바스크립트는 프로그램을 만들 때 변수에 의도한 값이 정확하게 들어갔는지 꼭 확인해야 한다.
    • 자바스크립트도 다른 프로그래밍 언어처럼 자료형을 강하게 확인해야 할 필요가 있다는 주장이 나와 '타입스크립트(TypeScript)'가 나왔다.

도슐랭스타
★★★★☆ : 다른 언어들과 비슷하면서 다른 것이 재미있구만!
정수와 실수를 구분하지 않으니 문제가 생기는 것도 흥미로웠고 왜 c언어에서 정수와 실수를 구분하는지 그 필요성을 이해했다. undefined와 null도 새롭고 재미있다. object는 파이썬의 딕셔너리와 비슷해서 반가웠다.