Deep DIve 06, 07장
타입변환
:book: 6장 데이터 타입
📝 데이터 타입이란?
데이터 타입. 줄여서 타입이라고도 함. 값의 종류를 말함. 자바스크립트의 모든 값은 데이터 타입을 가짐. 자바스크립트 ES6은 7개의 데이터 타입을 제공함. 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있음.
숫자, 문자열, 불리언, undefined, null, 심벌의 원시 타입과 객체, 함수 배열 등의 객체 타입.
숫자 타입의 값 1과 문자열 타입의 값1은 전혀 다른 값임. 숫자 타입의 값 1과 문자열 타입의 값 1은 값을 생성한 목적과 용도가 다름. c나 자바의 경우는 다양한 숫자 타입을 제공하나 자바스크립트는 하나의 숫자 타입만 존재함.
문자열 타입은 텍스트 데이터를 나타내는데 사용함. 문자열은 0개 이상의 16비트 유니코드 문자의 집합으로 전 세계 대부분의 문자를 표현할 수 있음.
undefined를 직역하면 “정의되지 않은” 이다. 변수는 선언. 함수는 정의. 자바스크립트는 변수를 선언하면 암묵적으로 정의가 이뤄져서 선언과 정의 구분이 모호함.
📝 데이터 타입이 필요한 이유
값을 저장할 때 확보해야하는 메모리 공간의 크기를 결정하기위해. 값을 참조할 때 한 번에 딝어 들여야할 메모리 공간의 크기를 결정하기 위해. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기위해.]
:book: 7장 연산자
📝 연산자의 종류
산술연산자
산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능할 경우, NaN을 봔한. 피연산자의 개수에 따라 이항 산술 연산자와 단항 산술 연산자를 구분할 수 있음.
이항 산술 연산자
-
-
- / %
-
단항 산술 연산자
단항 산술 연산자는 1개의 피연산자를 산술 연ㅅ나하여 숫자 값을 만듬. ++ – + - 단항 연산자는 증가/감소(++/–) 연산자는 피연산자의 값을 변경하는 부수 효과가 있음.
증가 감소 연산자는 위치에 의미가 있다.
앞에 넣으면 먼저 값을 증가/감소시키고 다른 연산을 수행함. 뒤에 위치하면 다른 연산을 먼저 수행한 다음 피연산자의 값을 증가/감소시킴.
문자열 연결 연산자
- 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. 그 외의 경우는 산술 연산자로 동작한다
문자열 연결 연산자
- 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. 그 외의 경우는 산술 연산자로 동작한다
'1'+ 2 ; = //'12'
1 + '2' = //'12'
1 + 2 ; // 3
1 + true = 2
1 + false = 1
1 + null = 1
+undefined; // NaN
1 + undefined ; // NaN
📝 타입 변환
개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되기도함.
이를 암묵적 타입 변환
, 또는 타입 강제 변환
이라고 한다.
삼항 조건 연산자 표현식은 if… else 문과 중요한 차이가 있다. 삼항 조건 연산자 표현식은 값처럼 사용핤 ㅜ있지만 if …else문은 값처럼 사용할수 없다. if…else 문은 표현식이 아니라 문이다. 따라서 if …else 문은 값처럼 사용할 수 없다. 삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문이다. 따라서 삼항 조건 연산자 표현식은 값처럼 다른 표현식의 일부가 될 수 있어 매우 유용하다.
조건에 따라 수행해야할 문이 하나가 아니라 여러개면 if..else문의 가독성이 더 좋다
typeof 연산자로 null 값을 연산하면 “null”이 아닌 “object”를 반환함 따라서 null 타입인지 확인할땐 typeof 연산자 말고 === 일치 연산자를 사용하자.
부수 효과가 있는 연산자는 할당 연산자 (=), 증가/감소 연산자(++/–) delete연산자 뿐임.