본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

9장 타입 변환과 단축 평가

9.1 타입 변환이란?

자바스크립트의 모든 값은 타입이 있다.

 

개발자가 의도를 가지고 타입을 변환하는 것 == 명시적 타입 변환 explicit coercion == 타입 캐스팅 type casting

개발자의 의도 상관없이 타입이 변환되는 것 == 암묵적 타입 변환 implicit coercion == 타입 강제 변환 type coercion

 

var x는 number 타입인데 중간에 string으로 혼자 변했지? 이게 내가 시킨게 아니야!!! 암묵적 타입변환 == 타입 강제 변환임

 

9.2 암묵적 타입 변환

1 == true   0== false

위에처럼 쓰면 암묵적 타입변환이 일어나서 에러가 발생한다고 한다.

(자바스크립트 엔진이 지멋대로 바꿔버린다 내의도랑 상관없이)

 

1) 문자열 타입으로 변환

 

+ 만 특이하게 작용하고 곱하기, 나누기 빼기는 한개라도 숫자면 연산을 한다

한 개라도 문자열 변수가 있으면

+ 연산자 ==> 문자열 연결 연산자 로 동작한다.

 

숫자 + '문자' --> string 타입
NaN 에 숫자를 뺴도 NaN .... 타입은 왜 number냐
NaN 에 숫자를 더해도 NaN... 타입이 왜 number야???

 

인피티티에 숫자를 뺴든 더하든 인피티니!!!!!!!!!!!!!!! 불리언 + 문자열이면 문자열로 암묵적 형 변환됨
심볼 + 문자 -> 에러 발생
객체는 객체이다. 객체 + 문자열 은 문자열이 된다

2) 숫자 타입으로 변환

+ 제외한 나머지 연산기호는 문자, 문자여도 number로 암묵적 타입 변환이 된다.
문자열, 불리언, null, 빈배열은 number 타입으로 변환됨 <-> 문자, undefined, 객체, 배열, 함수는 NaN

 

3) 불리언 타입으로 변환

if문에 넣어라

true 로 평가되는 것 : return !!v; false 로 평가되는 것 : return !v;
true
'0'
{}
[]
false
undefined
null
0, -0
NaN
''

 

9.3 명시적 타입 변환

개발자의 의도에 따라 명시적 타입을 변경

1) 생성자 함수를 new 연산자 없이 호출

2) 빌트인 메서드

 

 

1) 문자열 타입으로 변환

1-1) String 생성자 함수를 new 연산자 없이 호출

1-2) Object.prototype.toString 메서드 사용

1-3) 문자열 연결 연산자 이용

2) 숫자 타입으로 변환

1) Number 생성자 함수를 new 연산자 없이 호출

Number(문자열) 은 NaN인데??? Number( 문자가 하나라도 있으면) 씬텍스에러가 발생 근데 typeof는 number라고 한다

2) parseInt, parseFloat 함수 사용 (문자열-> 숫자 만 가능)

3) + 단항 산술 연산자

4) * 산술 연산자

곱하기나 나누기나 다 숫자로 변환함. 

 

 

9.4 단축 평가

아 이래서 쓰이는거구나 이거 본적있음 왜 이렇게 쓰나 했음

 

객체 가리키기 기대하는 변수가

null 또는 undefined 인지 아닌지 확인하고 프로퍼티 참조할 때

단축 평가를 사용하면 value가 null 로 잡힌다. 오류를 피할 수 있다.

'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글

13 렉시컬 스코프  (0) 2021.10.16
12 함수  (0) 2021.10.15
[2주차]11 원시 값과 객체의 비교  (0) 2021.10.10
10 객체 리터럴  (0) 2021.10.10
08 제어문  (0) 2021.10.10