[딥다이브] 데이터 타입, 연산자

Dongs·2023년 3월 16일
0

[딥다이브]

목록 보기
2/11

데이터 타입

구분데이터 타입
원시 타입Number
원시 타입String
원시 타입boolean
원시 타입undefined
원시 타입null
원시 타입Symbol
객체 타입객체, 함수, 배열 등
  • 자바스크립트의 데이터타입에는 위와 같이 primitive(원시타입) 타입의 데이터 타입이 6개, 객체 타입의 데이터 타입이 객체 함수 배열 등이 존재한다.

  • 새로 알았던 점은 NaN 이라는 데이터 타입은 Number 타입 이라는 것이다. (not a number의 약자)

null 타입

  • 자바스크립트는 대소문자를 구분하기 때문에 null, Null, NULL 모두 다른 값이다.

Symbol 타입

  • 심벌 타입은 변경 불가능한 원시 타입의 값, 다른 값과 중복되지 않는 유일무이한 값이다.
    => 주로 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

객체 타입

  • 한 가지 짚고 넘어가야 할 점
    => 자바스크립트는 객체 타입 언어이며, primitive 타입 6개를 제외하고는, 모두 객체 타입으로 분류된다!

데이터 타입의 필요성

var a=100;
var b=100;

위 코드와 같이 변수를 선언, 할당 했을 때 메모리에는 100이라는 값의 주소가 할당되며 변수 a와 b는 모두 100이라는 값의 메모리 주소를 가리킨다.

  • 변수의 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다.

동적 타이핑

  • 자바스크립트는 c나 자바 같은 언어와 다르게 동적 타이핑 언어이다.
int a = 1;
var a = 1;
a.toSting();

첫 번째 코드는 c언어의 변수 선언이고 마지막은 자바스크립트의 변수 선언이다.

c언어처럼 앞에 타입을 지정하여 변수 선언을 해주는 언어는 정적 타이핑 언어라고 한다.
자바스크립트 같은 경우는 타입지정을 따로 해주지 않고 내장메소드로 형변환이 가능하다. 이것을 동적타이핑 언어라고 한다.

  • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정되며 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.

단점

  • 자바스크립트는 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 한다. 즉 숫자 타입의 변수일 것이다라고 예측했지만 사실은 문자열 타입일 수도 있다는 것이다.
    => 결국 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다.

=> 따라서 자바스크립트는 동적타이핑 언어이다.

연산자

지수 연산자

  • 지수연산자는 좌항의 피연산자를 밑으로 우항의 피연산자를 지수로 거듭 제곱하여 값을 반환한다.
  • 기존의 Math.pow() 메소드와 동일한 값을 반환한다.
2 ** 2
Math.pow(2,2)

둘 다 같은 값을 리턴한다.

옵셔널 체이닝

const obj = { 
 a : {
   b: {
     c: {
       d: 1
     }
   }
 }
}

위와 같이 객체가 있다고 가정했을 때, 옵셔널 체이닝 연산자를 이용하면 키 값 d가 가지고 있는 value 값을 쉽게 뽑아서 쓸 수 있다.

console.log(obj.a?.b?.c?.d)

null 병합 연산자

const obj = { 
 a : {
   b: 1
}

위와 같은 코드가 있을 때 null 병합 연산자를 사용하면 접근한 값이 undefined나 Null 일 경우, undefined를 반환하고 값이 존재할 경우 그 값을 병합하여 반환한다.

const a = obj.a.b ?? 10; //a = 10
profile
자대고 css 하는 프론트엔드 개발자

0개의 댓글