[deep dive 스터디] 2주차

Ash·2022년 1월 22일
0

06. 데이터 타입

ES6의 데이터 타입 7개

구분데이터 타입
원시타입number
string
boolean
undefined
null
symbol
객체function, array, object

6.1 숫자 타입

  • 정수, 실수, 2진수, 8진수, 16진수 모두 메모리에 배정밀도 64비트 부동소수점 형식 으로 저장된다.
  • 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입은 존재하지 않으며 10진수로 해석된다.
  • Infinity(양의 무한대), -Infinity(음의 무한대), NaN 표현 가능

대소문자를 구별하므로 nan, NAN, Nan 표기하지 않도록 주의하기!

6.2 문자열 타입

  • 문자열은 0개 이상의 16비트 유니코드 문자의 집합
  • 문자열 표기 시 ', " 모두 사용가능하나 ' 사용을 권장한다.

6.3 템플릿 리터럴

  • 개행을 그대로 사용할 수 있다.
  • ${}(표현식 삽입)을 통해 가독성 좋은 문자열 조합이 가능하다.
  • IE 미지원...! 꼭 확인하고 사용하길
    MDN Template literals

6.5 undefined

  • 자바스크립트 엔진이 변수 초기화 시 사용하는 값으로 변수에 "값이 없음"을 표시하고 싶을 땐 null 을 사용하자

6.6 null

  • 마찬가지로 대소문자를 구별하므로 Null, NULL 등으로 사용불가
  • 변수에 null을 할당하는 것은 값에 대한 참조를 명시적으로 제거하는 것을 의미한다. 가비지 콜렉션이 수행됨.

6.7 symbol

  • 값이 외부에 노출되지 않고 변경 불가한 원시 타입의 값
  • 객체의 유일한 프로퍼티 키를 만들 때 주로 사용된다.
  • Symbol 함수를 호출해 생성한다. (이외 원시값들은 리터럴을 통해 생성)

6.9 데이터 타입의 필요성

  • 숫자타입은 64비트 배밀정도 부동소수점 형식 -> 8바이트

ex)
변수에 값을 저장하는 경우: 숫자 100을 변수에 저장하기 위해 8바이트의 저장공간을 확보하고 100을 2진수로 저장한다.
변수의 값을 찾는 경우: 값이 저장된 선두 메모리셀 주소를 찾아간 후 8바이트의 단위로 읽어들인다.

데이터 타입이 필요한 이유
1. 값을 저장할 때 확보해야 할 메모리 공간의 크기를 결정하기 위해
2. 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
3. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

6.10 동적 타이핑

  • 자바스크립트는 선언이 아닌 할당에 의해 타입이 결정된다.
  • 값의 재할당으로 인해 변수의 타입이 동적으로 변한다.

7. 연산자

7.1 산술 연산자

  • ++, -- 는 부수효과 O
  • +, - 부수효과 X
  • 숫자가 아닌 피연산자에 +를 붙이는 경우 피연산자를 숫자로 변환하여 반환한다.
    (피연산자를 변경하는 것이 아닌 숫자 타입으로 변환한 값을 생성하는 것 -> 부수효과 아님)
const a = '1';
console.log(typeof +a); // number

7.2 할당 연산자

7.3 비교 연산자

  • 동등 비교 (loose equality): ==
  • 일치 비교 (strict equality): ===

Object.is

-0 === +0;// true
Object.is(-0, +0);// false

NaN === NaN; // false
Object.is(NaN, NaN) // true

7.4 삼항 조건 연산자

7.5 논리 연산자

7.6 쉼표 연산자

var x,y,z;

x=1, y=2, z=3; //3

7.7 그룹 연산자

7.8 typeof 연산자

console.log(typeof null); // object 

7.9 지수 연산자 (== Math.pow)

  • 좌항 피연산자를 으로, 우항 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.
console.log(2 ** 2); // 4
console.log(2 ** 3); // 8

8. 제어문

8.2 조건문

  • switch문에서 break문을 잊지말자

8.4 break문

레이블문: 식별자가 붙은 문

foo: {
	console.log("bar");
}
profile
기록남기기👩‍💻

0개의 댓글