반응형
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 값
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
06_자바스크립트 : 함수 (화살표함수, 순수함수, 고차함수, 콜백함수, 재귀함수,...) (0) | 2022.07.28 |
---|---|
05_자바스크립트 : 리터럴 객체와 속성 (0) | 2022.07.27 |
04_자바스크립트 : 연산자 (비교연산자, 논리연산자, ES11 operator) (0) | 2022.07.27 |
03_자바스크립트 : 변수_명시적 타입 변환 (0) | 2022.07.26 |
01_자바스크립트 : 변수_데이터 타입( 숫자 , 문자열, 논리, ${ }, symbol) (0) | 2022.07.26 |