var x = 10;
var str = x.toString();
console.log(typeof str, str); // string 10
console.log(typeof x, x); // number 10
var x = 10;
var str = x + '';
console.log(typeof str, str); // string 10
console.log(typeof x, x); // number 10
// 템플릿 리터럴
`1 + 1 = ${1 + 1}` // '1 + 1 = 2'
// 숫자타입
0 + '' // '0'
-0 + '' // '0'
1 + '' // '1'
-1 + '' // '-1'
NaN + '' // 'NaN'
Infinity + '' // 'Infinity'
-Infinity + '' // '-Infinity'
// 불리언 타입
true + '' // 'true'
false + '' // 'false'
// null 타입
null + '' // 'null'
// undefined 타입
undefined + '' // 'undefined'
// 심벌 타입
(Symbol()) + '' // TypeError
// 객체 타입
({}) + '' // '[object Object]'
Math + '' // '[object Math]'
[] + '' // ''
[10, 20] + '' // '10, 20'
(function(){}) + '' // 'function(){}'
Array + '' // 'function Array() { [native code] }'
'1' > 0 // true
// 문자열 타입
+'' // 0
+'0' // 0
+'1' // 1
+'String' // NaN
// 불리언 타입
+true // 1
+false // 0
// null 타입
+null // 0
// undefined 타입
+undefined // NaN
// 심벌 타입
+Symbol() // TypeError
// 객체 타입
+{} // NaN
+[] // 0
+[10, 20] // NaN
+(function(){}) // NaN
if ('') console.log('1');
if (true) console.log('2'); // 2
if (0) console.log('3');
if ('str') console.log('4'); // 4
if (null) console.log('5');
// 1. String 생성자 함수를 new 연산자 없이 호출하는 방법
String(1); // '1'
String(NaN); // 'NaN'
String(Infinity); // 'Infinity'
String(true); // 'true'
String(false); // 'false'
// 2. Object.prototype.toString 메서드를 사용하는 방법
(1).toString(); // '1'
(NaN).toString(); // 'NaN'
(Infinity).toString(); // 'Infinity'
(true).toString(); // 'true'
(false).toString(); // 'false'
// 3. 문자열 연결 연산자를 이용하는 방법
1 + ''; // '1'
NaN + ''; // 'NaN'
Infinity + ''; // 'Infinity'
true + ''; // 'true'
false + ''; // 'false'
// 1. Number 생성자 함수를 new 연산자 없이 호출하는 방법
Number('0'); // 0
Number('-1'); // -1
Number('10.53'); // 10.53
Number(true); // 1
Number(false); // 0
// 2. parseInt, parseFloat 함수를 사용하는 방법(문자열만 변환 가능)
parseInt('0'); // 0
parseInt('-1'); // -1
parseFloat('10.53'); // 10.53
parseInt(true); // NaN (문자열만 가능)
parseInt(false); // NaN (문자열만 가능)
// 3. + 단항 산술 연산자를 이용하는 방법
+'0'; // 0
+'-1'; // -1
+'10.53'; // 10.53
+true; // 1
+false; // 0
// 4. * 산술 연산자를 이용하는 방법
'0' * 1; // 0
'-1' * 1; // -1
'10.53' * 1; // 10.53
true * 1; // 1
false * 1; // 0
// 1. 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); // false
// undefined => 불리언
Boolean(undefined); // false
// 객체 => 불리언
Boolean({}); // true
Boolean([]); // true
// 2. ! 부정 논리 연산자를 두 번 사용 하는 방법
// 문자열 => 불리언
!!'x'; // true
!!''; // false
!!'false'; // true
// 숫자 => 불리언
!!0; // false
!!1; // true
!!NaN; // false
!!Infinity; // true
// null => 불리언
!!null; // false
// undefined => 불리언
!!undefined; // false
// 객체 => 불리언
!!{}; // true
!![]; // true
'Cat' && 'Dog' // 'Dog'
'Cat' || 'Dog' // 'Cat'
단축 평가 규칙
- true || anything => true
- false || anything => anything
- true && anything => anything
- flase && anything => false
// 논리합(||) 연산자
'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 = '완료';
// 단축평가로 가능하다
message = done && '완료';
console.log(message); // 완료
var done = false;
var message = '';
// false일때
if (!done) message = '미완료';
// 단축평가로 가능하다
message = done || '미완료';
console.log(message); // 미완료
var elem = null;
var value = elem && elem.value; // null
function getStringLength(str) {
str = str || '';
return str.length;
}
getStringLength(); // 0
getStringLength('hi'); // 2
// ES6 매개변수 기본값 설정
function getStringLength(str = '') {
return str.length;
}
getStringLength(); // 0
getStringLength('hi'); // 2
var elem = null;
var value = elem?.value;
console.log(value); // undefined
var str = '';
var length = str && str.length; // 논리연산자 && 단축평가
var length2 = str?.length; // 옵셔널 체이닝 연산자
console.log(length); // '' 좌항의 연산자를 참조함.
console.log(length2); // 0 우항의 연산자를 참조함.
var str = null ?? 'default string';
console.log(str); // 'default string'