JavaScript 자료형과 특성

손윤주·2022년 5월 20일
0
post-thumbnail

✔️ JS 자료형

자바스크립트는 여덟 가지의 기본 자료형이 있다.

자바스크립트의 여덟 가지 기본 자료형

  • 숫자형 – 정수, 부동 소수점 숫자 등의 숫자를 나타낼 때 사용합니다. 정수의 한계는 ±253 입니다.
  • bigint – 길이 제약 없이 정수를 나타낼 수 있습니다.
  • 문자형 – 빈 문자열이나 글자들로 이뤄진 문자열을 나타낼 때 사용합니다. 단일 문자를 나타내는 별도의 자료형은 없습니다.
  • 불린형 – true, false를 나타낼 때 사용합니다.
  • null – null 값만을 위한 독립 자료형입니다. null은 알 수 없는 값을 나타냅니다.
  • undefined – undefined 값만을 위한 독립 자료형입니다. undefined는 할당되지 않은 값을 나타냅니다.
  • 객체형 – 복잡한 데이터 구조를 표현할 때 사용합니다.
  • 심볼형 – 객체의 고유 식별자를 만들 때 사용합니다.

✔️ JS만의 특성

느슨한 타입(loosely typed)의 동적(dynamic) 언어이다.

자바스크립트의 변수는 자료형에 관계없이 모두 var, let, const 중 하나로 선언할 수 있다.
따라서 변수는 문자열일수도 있고 숫자일수도 있음!
다만 const는 재선언, 재할당 불가하다

// 변수에 문자열로 선언했다가 숫자로 재할당할 수 있음.
let msg = "hello world";
msg = 123456;

💡 이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입(dynamically typed)’ 언어라고 부릅니다.

JavaScript 언어의 타입은 원시 값과 객체로 나뉨.

  • 원시 값 (언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
    • Boolean - 논리 요소를 나타내며 true와 false 딱 두가지의 값만 있음
    • Null - null 값은 오로지 null 값만 포함하는 별도의 자료형
    • Undefined - null 값처럼 자신만의 자료형을 형성, '값이 할당되지 않은 상태’를 나타낼 때 사용
    • Number - 일반적인 숫자 외에 Infinity, -Infinity, NaN같은 '특수 숫자 값(special numeric value)'도 포함
    • BigInt - 아주 큰 숫자가 필요한 상황에 사용
    • String - 따옴표의 세 종류를 가짐. (''), (""), (``)
    • Symbol - 객체의 고유한 식별자(unique identifier)를 만들 때 사용
  • 객체 (속성의 컬렉션) - 원시 값이 아닌 데이터 컬렉션이나 복잡한 개체(entity)를 표현

JavaScript는 형변환이 가능하다.

Java 같은 경우는 int 변수, String 변수 등 해당하는 형으로 일일이 다르게 선언해주야 하지만 자바스크립트는 일단 모든 변수를 공통적으로 var나 let으로 선언 가능하다.
위에서 이야기했듯이 변수 선언 후 재할당할 때 형변환이 가능!

문자형을 숫자형으로 변환하기

var 변수 = parseInt(문자);    //문자를 정수형 숫자로 변환해줌
var 변수 = parseFloat(문자);     //문자를 실수형 숫자로 변환해줌
var 변수 = Nember(문자);    //문자를 정수&실수형 숫자로 변환해줌

🍯 여러 형변환 메소드는 여기서 참고하세요.


일치연산자 == 와 ===, 뭐가 다른걸까?

 '=='와 '===' 연산자의 주된 차이점을 알아보기 위해 예를 들자면 숫자를 숫자 리터럴과 비교하면, '=='는 그것을 허용하지만, '===' 두 변수의 형식은 동일하지 않은 경우 값뿐만 아니라 두 변수의 유형도 확인하므로 허용하지 않는 것이다. 즉, '==='는 'false'으로 반환하고, '=='는 'true'로 반환한다.

  • '==' 는 Equality 연산자, 값만 비교해서 맞으면 true 반환.
  • '===' 는 Identity 연산자, 값과 자료형 둘 다 같아야만 true 반환.

💡 '==' 를 사용하다보면 의도치않게 데이터타입이 바뀌어 있을 수 있으므로 더 엄격한 일치연산자인 '===' 을 사용하는 습관을 들이자!


느슨한 타입의 동적 언어는 이런 단점이 있어요.

실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음.

동적(dynamic) 타입 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다.
이러한 불편함을 해소하기 위해 TypeScipt나 Flow 등을 사용할 수 있습니다.


undefined와 null의 차이는요.

undefined

변수를 선언하고 값을 할당하지 않은 상태, null은 변수를 선언하고 빈 값을 할당한 상태(빈 객체)이다. 즉, undefined는 자료형이 없는 상태이다.
따라서 typeof를 통해 자료형을 확인해보면 null은 object로, undefined는 undefined가 출력되는 것을 확인할 수 있다.

null

어떤 값이 의도적으로 비어있음을 표현한다. undefined는 값이 지정되지 않은 경우를 의미하지만, null의 경우에는 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다.

💡 undefined는 값을 할당해 달라는 의미, null은 텅 비어있는 유니크한 값!


다음 포스팅에서 JS 특성에 대해 이어서 다루겠습니다. 🔜 🔜 🔜

0개의 댓글