[DeepDive] 데이터타입, 연산자

FE 개발자 신상오·2022년 7월 22일
0

모던JS 딥다이브

목록 보기
2/5

📚06장 데이터 타입

데이터 타입이 필요한 이유

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기 결정을 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수 어떻게 해석할지 결정하기 위해
    ex) 0100 0001 : 숫자로는 65, 문자로는 A로 해석된다

원시타입

· 숫자 (Number)

c, java의 경우에는 정수, 실수를 구분하며 int, long, float, double 과 같은 다양한 숫자 타입을 제공하지만
JS의 경우는 하나의 실수숫자 타입만 존재하므로 모든 숫자를 실수로 표현한다
(1 === 1.0true )

  • 특수한 number 타입
    • Infinity : 양의 무한대
    • -Infinity : 음의 무한대
    • NaN : 산술 연산 불가 (JS 대소문 구분하기 때문에 NaN만 가능)

· 문자열 (String)

텍스트 데이터를 나타내는 데 사용하는 데이터타입

· 불리언

논리적 참, 거짓을 나타내는 데이터 타입

· undefined 타입

변수 선언 후 아무런 값을 할당하지 않을 경우 메모리에 들어있는 쓰레기값을 초기화하기 위해 JS엔진이 자동으로 할당하는 데이터 타입

· null 타입

변수에 값이 없다는 것을 의도적으로 명시할 때 사용하는 데이터 타입

· symbol 타입

다른 값과 중복되지 않는 유일무이한 데이터 타입
(33장 Symbol 참고)


객체타입

· 객체

· 함수

· 배열


동적 타이핑

자바스크립트는 동적 타이밍 언어이기 때문에 변수의 데이터는 데이터 타입 선언 필요 없음
정적 타이핑 언어인 C, 자바는 변수의 타입을 명시해줘야함 ex) int, float

할당에 의해 타입이 결정되고 언제든 재할당에 의해 타입이 변경될 수 있어서 편리하지만
동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없다는 단점이 있다 즉, 유연성은 높지만 신뢰성은 떨어진다


📚07장 연산자

하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 수행해 하나의 값을 만든다


산술 연산자

  • 이항 산술 연산자 : +, -, *, /, %

  • 단항 산술 연산자 : ++, -- , +, -
    ⭐️ 숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 숫자 타입으로 변환됨
    ➡️ 코딩테스트에 종종 사용됨

  • 문자열 연결 연산자 : +
    피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다

할당 연산자

=, +=, -=, *=, /=, %=

비교 연산자

  • 동등 일치 비교 연산자 : ==, ===, !=, !==
    ⚠️ == 비교 연산자는 타입이 달라도 타입 변환후 같은 값일 수 있다면 true를 반환한다
    ex) 1 == '1' ➡️ true
  • 대소 관계 비교 연산자 : >, <, >=, <=

삼항 조건 연산자

조건식 ? 조건식이 true일때 반환값 : 조건식이 false일때 반환값

논리 연산자

||, &&, !

typeof 연산자

피연산자 테이터 타입을 문자열로 반환

⚠️ typeof(null) "object"를 반환하는 버그가 있음
따라서 null 값을 확인할 때는 === 일치 연산자를 이용해 확인필요

지수 연산자

**

📚08장 제어문

블록문 : {}

조건문

  • if ~ else 문
  • switch문
switch(표현식) {
  case 표현식1:
  	switch 문의 표현식과 표현식 1이 일치하면 실행될 문;
    break;
  case 표현식2:
  	표현식 표현식 2 일치하면 실행될 문;
    break;
  default:
    일치하는 case없으면 실행될 문;
}

반복문

  • for문
  • while문
  • do while문

break 문

반복문 탈출

continue 문

반복문 현 지점에서 바로 증감식으로 이동

profile
주간 회고용 블로그입니다 (개발일지와 정보글은 티스토리에 작성합니다.)

0개의 댓글