자바스크립트 2

_dodo_hee·2023년 8월 3일
0

핸드북

목록 보기
23/29

심벌 타입

ES6부터 도입 된, 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다.

  • 다른 값과 중복되지 않는 유일무이한 값.
  • 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용.
  • 객체 프로퍼티 키로 사용할 수 있는 값은 빈 문자열을 포함하는 모든 문자열 또는 심벌 값.

데이터 타입

데이터 타입은 프로그래밍 언어에서 사용할 수 있는 데이터(숫자,문자열,불리언 등)의 종류.

코드에서 사용되는 모든 데이터는 메모리에 저장하고 참조할 수 있어야한다.

데이터 타입 데이터를 메모리에 저장할때,

  • 확보해야하는 메모리 공간의 크기
  • 할당할 수 있는 유효한 값에 대한 정보
  • 메모리에 저장되어 있는 2진수 데이터를 어떻게 해석할 지에 대한 정보

들을 컴퓨터와 개발자에게 알려준다.

데이터 타입 사용하는 이유?

  • 한정된 메모리 공간을 효율적으로 관리하기 위해
  • 2진수 데이터로 메모리에 저장 된 데이터를 다양한 형태로 사용하기 위해

데이터 타입 종류

원시 타입

변경 불가능한 값(immutable value)이며 pass-by-value(값에 의한 전달) 이다.

숫자 타입

  • 자바스크립트는 모든 수를 실수로 처리.
  • 정수만 표현하기 위한 별도의 데이터 타입이 존재하지 않음.
  • 메모리에 64비트 부동소수점 형식의 2진수로 저장.
  • 메모리에 있는 어떤 형식의 값을 참조하든지 모두 10진수로 해석.
  • 숫자 타입은 특별한 값도 있음.(Infinity, -Infinity, NaN)

자바스크립트 엔진은 대소문자를 구별한다.

문자열 타입

  • 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합
  • 전 세계 대부분의 문자를 표현
  • 나타내는 방법은 세 가지. (' ', " ", 백틱) - 문자열 나타낼 때 가장 일반적으로 작은따옴표가 사용.

템플릿 리터럴

  • 템플릿 리터럴은 ES6부터 도입.
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공.
  • 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리.
  • ${}

불리언 타입

  • true | false

undefined 타입

  • var로 변수를 선언하면 자바스크립트 엔진이 자동적으로 undefined로 초기화시켜버림
  • 변수를 참조했을 때 undefined가 반환된다면, 변수 선언 이후 값이 할당되지 않은, 초기화되지 않은 변수라는 뜻.

null 타입

  • 변수에 값이 없다는 것을 의도적으로 명시할 때 사용
  • 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거
  • 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행한다.

객체 타입 (참조 타입)

원시 타입을 제외한 모든 것이 객체 타입이다.

  • 객체타입은 변경 가능한 값을 뜻한다.
  • 객체타입을 복사해서 다른 변수에 할당 할 경우 해당 객체 타입의 주소값이 두번 째 변수의 메모리 공간에 저장된다.
  • 원시타입을 복사해서 다른 변수에 할당 할 경우 해당 원시 타입의 원시값이 두번 째 변수의 메모리 공간에 값 자체가 저장된다.

동적 타이핑

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

동적 타입 언어는 유연성은 높지만, 신뢰성은 떨어진다.
동적 타이핑 언어는 사용자가 직접 타입을 지정 하지 않는다.
사용자는 값을 대입하고, 자바스크립트 엔진은 사용자가 대입한 값을 바탕으로 타입을 지정한다.

dohee = "babo";

정적 타이핑

정적 타입언어는 명시적 타입선언을 하는 언어

정적 타입 언어는 컴파일 시점에 타입 체크한다
= 선언한 데이터에 맞는 값을 할당했는지 검사하는 처리.
만약 타입 체크 통과 못했다면 에러를 발생시킨다.

const dohee = "yeah";

타입 변환

기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것.

  • 개발자 의도에 따라 값의 타입을 변환하는 것
    명시적 타입 변환
    타입 캐스팅
  • 개발자 의도와는 상관없이 표현식을 평가하는 중에 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것
    암묵적 타입 변환
    타입 강제 변환
  • 명시적 타입 변환이나, 암묵적 타입 변환이 기존 원시값을 직접 변경하는 것은 아님.
    * 원시 값은 변경 불가능 한 값이므로 변경 불가능.

자바스크립트는 가급적 에러를 발생시키지 않도록, 암묵적으로 타입 변환을 통해 표현식을 평가한다.

단축 평가

타입 변환하지 않고 그대로 반환하는 것.

  • 단축 평가는 표현식을 평가하는 도중에 평가결과가 확정된 경우,
    나머지 평가 과정을 생략.
  • 단축평가를 사용하면 if 문을 대체할 수 있으며,
  • 삼항 조건 연산자는 if-else 문을 대체할 수 있다.

진짜 말그대로 짧게 평가한다는 뜻..같은데..?

논리 연산자

논리합|| 또는 논리곱&&.

논리곱&&

두 개의 피연산자가 모두 true로 평가될 때 true를 반환.
좌항에서 우항으로 평가가 진행.

논리합||

두 개의 피연산자 중 하나만 true로 평가되어도 true를 반환.

옵셔널 체이닝 연산자

ES11 부터 사용, 옵셔널 체이닝 연산자 ?

  • 좌항의 피연산자가 null 또는 undefined인 경우
    undefined를 반환하고, 아니면 우항의 프로퍼티 참조를 이어간다

null 병합 연산자

ES11 부터 사용, null 병합 연산자 ??

  • 좌항의 피연산자 null 또는 undefined인 경우
    우항의 피연산자를 반환,아니면 좌항의 피연산자를 반환.
  • null 병합 연산자 ??는 변수에 기본값을 설정할 때 유용.
profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글