프로그래밍/JavaScript

02_자바스크립트 : 변수_암묵적 타입 변환(implicit-coercion)

pupu91 2022. 7. 26. 19:37
반응형

 

1. 동적 타입 언어 (dynamically typed language)

- 자바스크립트는 변수 선언 후 사전에 데이터 타입을 지정하지 않음.

- 할당에 의해 타입이 결정되어 재할당하게 되면 동적으로 변수의 타입이 변경 됨.

 

var test;
console.log(typeof test);
=> undefined

test = 1;
console.log(typeof test);
=> number

test = 'JavaScript';
console.log(typeof test);
=> string
.
.
.

 

 

 

2. 암묵적 타입 변환(implicit-coercion)

- 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것

 

 

 

2-1.  문자열 타입으로 변환(convert to string)

: 문자열 연결 연산자(+)는 문자열 타입이 아닌 피연산자를 문자열 타입으로 암묵적으로 변환

console.log(10 + '20');
=>1020

 

 

 

 

2-2. 숫자 타입으로 변환(convert to number)

(1) 산술 연산자

산술 연산자의 피연산자는 모두 숫자여야 하므로 
숫자가 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다.

console.log(10 - '5');
console.log(10 * '5');
console.log(10 / '5');
console.log(10 % 'JavaScript'); <-피연산자 숫자 변환 불가로 연산 수행 불가

출력
5
50
2
NaN

(2) 비교 연산자

비교 연산자로 크기를 비교하기 위해 모두 숫자 타입이여야 하므로 
숫자가 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다.
console.log(10 > '5');
console.log(10 > '20');

출력
true
false

(3) + 단항 연산자

피연산자가 숫자 타입의 값이 아니면 숫자 타입의 값으로 암묵적 타입 변환 수행

console.log(+'');                   // 0
console.log(+'1');                  // 1
console.log(+'JavaScript');         // NaN
console.log(+true);                 // 1
console.log(+false);                // 0
console.log(+null);                 // 0
console.log(+undefined);            // NaN
//console.log(+Symbol());  // Cannot convert a Symbol value to a number
console.log(+{});                   // NaN
console.log(+[]);                   // 0
console.log(+function(){});         // NaN

* 빈 문자열, 빈 배열, null, false는 0으로 변환
* true는 1로 변환된다.
* 객체와 undefined, 함수는 변환되지 않아 NaN이 반환된다.

 

 

 

2-3. 논리 타입으로 변환 (convert to boolean)

: 불리언 타입이 아닌 값을 Truthy 값(참으로 평가되는 값) 또는 Falsy 값(거짓으로 평가되는 값)으로 구분

  false, undefined, null, 0, NaN, 빈 문자열은 Falsy 값, 이 외의 모든 값들을 Truthy 값

 

 

반응형