본문 바로가기
JavaScript

[JavaScript] 타입변환과 단축평가

by eddypark 2023. 9. 27.

(1) 묵시적 타입 변화(자동 타입변환)

- 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면, 자동으로 타입을 변환되는 것이다.

var x = "14", y = 20;
var a = x + y;
console.log(typeof a, a); // string, 1420
a = x - y;
console.log(typeof a, a); // number, -6
a = x * y;
console.log(typeof a, a); // number, 280

(2) 명시적 타입 변환

- 사용자에 의해 의도적으로 값의 타입을 변환하는 것이다.

- Number( ) : 문자를 숫자로 변환한다.

- String( ), .toString() : 숫자나, 불린 등을 문자형으로 변환한다.

- Boolean( ) : 문자나 숫자 등을 불린 형으로 변환한다. // 값이 1이거나 존재하면 true, 0이거나 존재하지 않으면 false,

- Object( ) : 모든 자료형을 객체형으로 변환한다 // 하위에 값을 줄 수 있게 된다.

- parseInt( ) : 문자를 int형으로 변환한다. (정수) // 소수점 아래 숫자를 자른다.

- parseFloat( ) : 문자를 float형으로 변환한다. (소수) // 소수점 아래 숫자까지 살려준다.

var x = 10;
var y = "10";
var z = "10.111";
console.log(typeof String(x), String(x));           // string 10
console.log(typeof Number(z), Number(z));           // number 10.111
console.log(typeof Boolean(x), Boolean(x));         // boolean true
console.log(typeof Object(x), Object(x));           // object [Number: 10]
console.log(typeof parseInt(z), parseInt(z));       // number 10
console.log(typeof parseFloat(z), parseFloat(z));   // number 10.111

(3) 단축 평가

- 논리 평가를 할 때 중간에 평가 결과가 나오면 끝까지 평가하지 않고 평가 결과를 반환해 버린다.

- ||(논리합) 연산자의 단축 평가 : 왼쪽이 true면 왼쪽 그대로 반환, 왼쪽이 false면 오른쪽 값을 반환한다.

true || false;     // true (오른쪽의 false는 볼 것도 없이, 왼쪽의 true 반환) 
true || true;      // true (오른쪽의 true는 볼 것도 없이, 왼쪽의 true 반환)
"apple" || false;  // "apple" 
"apple" || true;   // "apple"

false || true;     // true  (오른쪽 값이 반환된다) 
false || false;    // false (오른쪽 값이 반환된다)
false || "banana"; // "banana"

"apple" || "banana"; // "apple" (왼쪽 값이 빈 문자열이 아니므로 true로 평가되고 왼쪽이 true로 평가되기 때문에 왼쪽 값 apple 반환)

- &&(논리곱) 연산자의 단축 평가 : 둘 다 true여야 true이므로 왼쪽이 false면 오른쪽을 평가하지 않고 왼쪽 값 반환, 왼쪽이 true면 오른쪽 값을 그대로 반환한다.

false && true;        // false (오른쪽은 볼 것도 없이, false) 
false && false;       // false (오른쪽은 볼 것도 없이, false)
false && "banana";    // false (왼쪽이 false이므로 왼쪽 값 false 반환)
null && false;        // null  (왼쪽이 false이므로 왼쪽 값 null 반환)

true && true;         // true  (왼쪽이 true이므로 오른쪽 값 true를 그대로 반환) 
true && false;        // false (왼쪽이 true이므로 오른쪽 값 false를 그대로 반환)
"apple" && true;      // true  (왼쪽이 문자열(true)이므로 오른쪽 값 true를 그대로 반환)
"apple" && false;     // false (왼쪽이 문자열(true)이므로 오른쪽 값 false를 그대로 반환)

"apple" && "banana"   // "banana" (왼쪽 값이 빈 문자열이 아니므로 true로 평가되므로 오른쪽 값 banana 반환)

- 주로 null / undefined체크, 함수 매개변수 기본 값 설정, 조건부 변수 값 할당에 유용하게 쓰인다.

const a = null; 
const b = a && a.name;             // a가 null이면 false로 평가되므로, 오른쪽은 볼 것도 없이 왼쪽 값인 a(null)이 할당된다.
console.log(b);                    // null


function a(name){ 
	const b= name || "이름없음"; 
	return b; 
}; 
a('wangi')                         // "wangi" 
a();                               // "이름없음"

'JavaScript' 카테고리의 다른 글

[JavaScript] 객체 변경 불가성  (1) 2023.10.11
[JavaScript] 객체  (0) 2023.10.04
[JavaScript] 제어문  (0) 2023.09.27
[JavaScript]연산자  (0) 2023.09.26
[JavaScript]데이터 타입  (0) 2023.09.25