Javascript/Basics

데이터 타입

Juhyuck 2023. 4. 1. 16:02
728x90

배운 것


1. 데이터 타입

JS에는 원시형과 객체가 있다.

 

1.1. 원시형(Primitive values)

원시형은 불변(immutable) 타입이다.

원시형에는 boolean, null, undefined, number, string, symbol 이 있다.

-Infinity, +Infinity, NaN의 Type은 number다.

  • 그리고, 0이라는 number는 +0과 -0으로 표현할 수 있는데, 엄밀한 비교연산자인 ===으로 비교했을 때는 같지만, 
    나누기에 사용하면 +Infinity와 -Infinity를 만들 수 있다. 쓸일이 있을까 싶다만.
  • number는 bigInt도 있는데, 더 큰 숫자를 다룰 때 쓴다고 하지만, 실제 사용할 때 자세히 보면 될 듯.
  • string타입은 언어에 따라 다른데 JS는 불변(immutable)이다. 그렇지만 짤라내서 새로운 string을 만들거나,
    두 string을 합치는 것은 가능하다. 숫자처럼. 심지어 JS는 문자열에 숫자 더해도 숫자를 문자열로 바꿔서 붙여버린다. 

string과 number를 더해보자

※ 이상한 점은 문자열에서 숫자를 뺄 때인데,
뺄 때는 문자열을 숫자로 봐주는 것 같다. 그래서... 아래와 같이 계산된다.
숫자로 된 문자열이 아니라면 NaN으로, 숫자로된 문자열에 숫자를 빼면 계산해버리는 식으로.

 

빼면 숫자로 보는 듯?

1.2. 객체(Objects)

객체는 원시형이 아닌 모든 값으로 우리 MDN에서는 식별자로 참조할 수 있는 메모리 상의 값을 말한다고 한다. 좀 어렵다.

그러니까 객체를 하나 만들면 메모리에 어떤 값을 저장하는데 객체는 그걸 찾을 수 있는 어떤 값(주소같은...)을 가진다는 뜻이고, 결국 같은 내용을 두 객체에 저장한다고해도 두 객체의 값인 주소는 다르다고 이해했다. 

객체와 스트링 엄밀한 비교

얼핏 보면 key: value로 저장하는 것이 python dictionary와 비슷해 보이지만 차이가 있는데, 기능적인 차이는 여기를 참조.

다만, python이 정의하는 객체(Object)와 JS가 정의하는 객체(Object)가 다르기 때문에 단순하게 이해해서는 안될 것 같다.

참고로 python은 모든게 객체다. JS는 원시형을 제외한 모든 것이 객체고.

 

그리고 객체를 복사할 때 shallow copy와 deep copy도 검색해서 알아두면 좋을듯. 나중에 정리해볼 것.

 

빈 Object를 선언하려면 아래와 같이 Object()를 new라는 연산자로 새로운 객체의 인스턴스를 만들 수 있다.

 

let 변수 = new Object()

객체에 대해서 조금 더 이해하면, this, constructor에 대해서 문서를 읽어보자. python에서는 각각 self와 __init__인 것으로 생각해도 무방할 것 같다. 

'Javascript > Basics' 카테고리의 다른 글

자바스크립트 ES, ES5, ES6(ES2015)  (0) 2023.04.09
this[0]  (0) 2023.04.08
Hoisting, 호이스팅  (0) 2023.04.08
객체(Object) 다루기  (0) 2023.04.03
배열(Array) 다루기  (0) 2023.04.01