writed by wnsdlf25
var x = 10;
// 명시적 타입 변환
// 숫자를 문자열로 타입 캐스팅한다
var str = x.toString();
console.log(typeof str, str); //string 10
// x 변수의 값이 변경된 것은 아니다.
console.log(typeof x, x); // number 10
var x = 10;
var str = x + '';
console.log(typeof str, str); // string 10
// x 변수의 값이 변경된 것은 아니다.
console.log(typeof x, x); // number 10
o 문자열 타입으로 변환
1 + '2' // -> "12"
o 숫자 타입으로 변환
1 - '1' // -> 0
1 * '10' // -> 10
1 / 'one' // -> NaN
'1' > 0 // -> true
'abc' > 0 // -> false
// 문자열 타입
+'' // 0
+'0' // 0
+'1' // 1
+'string' // NaN
// 불리언 타입
+true // 1
+false // 0
// null 타입
+null // 0
// undefined 타입
+undefined // NaN
// 심벌 타입
+Symbol() // TypeError : Cannnot convert a Symbol value to a number
// 객체 타입
+{} // NaN
+[] // 0
+[10, 20] // NaN
+(function(){}) // NaN
o 불리언 타입으로 변환
if ("") console.log("a");
if (true) console.log("b");
if (0) console.log("c");
if ("str") console.log("d");
if (null) console.log("e");
// b d
o 문자열 타입으로 변환
// String 생성자 함수를 new 연산자 없이 호출하는 방법
// 숫자 타입 => 문자열 타입
String(1); // '1'
String(NaN); // 'NaN'
String(Infinity); // 'Infinity'
// 불리언 타입 => 문자열 타입
String(true); // 'true'
String(false); // 'false'
// Object.prototype.toString 메서드를 사용하는 방법
// 숫자 타입 => 문자열 타입
(1).toString() // '1'
(NaN).toString() // 'NaN'
(Infinity).toString() // 'Infinity'
// 불리언 타입 => 문자열 타입
(true).toString() // 'true'
(false).toString() // 'false'
// + 문자열 연결 연산자를 이용하는 방법
// 숫자 타입 => 문자열 타입
1 + '' // '1'
NaN + '' // 'NaN'
Infinity + '' // 'Infinity'
// 불리언 타입 => 문자열 타입
true + '' // 'true'
false + '' // 'false'
// * 산술 연산자를 이용하는 방법
// 문자열 타입 => 숫자 타입
'0' * 1; // 0
'-1' * 1; // -1
'10.53' * 1; // 10.53
// 불리언 타입 => 숫자 타입
true * 1; // 1
false * 1 // 0
o 불리언 타입으로 변환
// Boolean 생성자 함수를 new 연산자 없이 호출하는 방법
// 문자열 타입 => 불리언 타입
Boolean('x'); // true
Boolean(''); // false
Boolean('false'); // true
// 숫자 타입 => 불리언 타입
Boolean(0); // false
Boolean(1); // true
Boolean(NaN); // false
Boolean(Infinity); // true
// null 타입 => 불리언 타입
Boolean(null); // true
// undefined 타입 => 불리언 타입
Boolean(undefiend); // false
// 객체 타입 => 불리언 타입
Boolean({}) //true
Boolean([]) // true
// ! 부정 논리 연산자를 두 번 사용하는 방법
// 문자열 타입 => 불리언 타입
!!'x'; // true
!!''; // false
!!'false'; // true
// 숫자 타입 => 불리언 타입
!!0; // false
!!1; // true
!!NaN; // false
!!Infinity; // true
// null 타입 => 불리언 타입
!!null; // false
// undefined 타입 => 불리언 타입
!!undefined; // false
// 객체 타입 => 불리언 타입
!!{}; // true
!![]; // true
// || 연산자
'Cat' || 'Dog' // 'Cat'
false || 'Dog' // 'Dog'
'Cat' || false // 'Cat'
// && 연산자
'Cat' && 'Dog' // 'Dog'
false && 'Dog' // false
'Cat' && false // false
var done = true;
var message = "";
// 주어진 조건이 true일 때
if (done) message = "완료";
// if 문은 단축 평가로 대체 가능하다.
// done이 true라면 message에 '완료'를 할당
message = done && "완료";
console.log(message); // -> 완료
var elem = null;
// elem이 null 또는 undefined이면 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다.
var value = elem?.value;
console.log(value); // -> undefined
// 좌항의 피연산자가 Falsy 값이라도 null 또는 undefined가 아니면 우항의 피연산자 반환
var str = '';
var length = str?.length;
console.log(length); // -> 0