๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๊ฐ์ ํ์ ์ ๋ณํํ๋ ๊ฒ์ ๋ช ์์ ํ์ ๋ณํ ๋๋ ํ์ ์บ์คํ ์ด๋ผ ํ๋ค.
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;
// ์๋ฌต์ ํ์
๋ณํ
// ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ ์ซ์ ํ์
x์ ๊ฐ์ ๋ฐํ์ผ๋ก ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๋ค.
var str = x + '';
console.log(typeof str, str); // string 10
// x ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ์๋๋ค.
console.log(typeof x, x); // number 10
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํํ์์ ํ๊ฐํ ๋ ๊ฐ๋ฐ์์ ์๋์๋ ์๊ด์์ด ์ฝ๋์ ๋ฌธ๋งฅ์ ๊ณ ๋ คํด ์๋ฌต์ ์ผ๋ก ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ ๋ณํ ํ ๋๊ฐ ์๋ค.
// ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ๋ฌธ์์ด ํ์
์ด์ด์ผ ํ๋ ๋ฌธ๋งฅ
'10' + 2 // '102'
// ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ซ์ ํ์
์ด์ด์ผ ํ๋ ๋ฌธ๋งฅ
5 * '10' // 50
// ํผ์ฐ์ฐ์ ๋๋ ํํ์์ด ๋ถ๋ฆฌ์ธ ํ์
์ด์ด์ผ ํ๋ ๋ฌธ๋งฅ
10 // true
// 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. ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
// ์ซ์ ํ์
=> ๋ฌธ์์ด ํ์
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
// 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({}); // true
Boolean([]); // true
// 2. ! ๋ถ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
// ๋ฌธ์์ด ํ์
=> ๋ถ๋ฆฌ์ธ ํ์
!!'x'; // true
!!''; // false
!!'false'; // true
// ์ซ์ ํ์
=> ๋ถ๋ฆฌ์ธ ํ์
!!0; // false
!!1; // true
!!NaN; // false
!!Infinity; // true
// null ํ์
=> ๋ถ๋ฆฌ์ธ ํ์
!!null; // false
// undefined; // false
!!undefined; // true
// ๊ฐ์ฒด ํ์
=> ๋ถ๋ฆฌ์ธ ํ์
!!{}; // true
!![]; // true
// ๋
ผ๋ฆฌํฉ ์ฐ์ฐ์
'Cat' || 'Dog' // 'Cat'
false || 'Dog' // 'Dog'
'Cat' || false // 'Cat'
//๋
ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์
'Cat' && 'Dog' // 'Dog'
false && 'Dog' // false
'Cat' && false // false
๋จ์ถ ํ๊ฐ๋ฅผ ์ฌ์ฉํ๋ฉด if ๋ฌธ์ ๋์ฒดํ ์ ์๋ค. ์ด๋ค ์กฐ๊ฑด์ด truthy ๊ฐ์ผ ๋ ๋ฌด์ธ๊ฐ๋ฅผ ํด์ผ ํ๋ค๋ฉด ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์ ํํ์์ผ๋ก if ๋ฌธ์ ๋์ฒดํ ์ ์๋ค.
var done = true;
var message = '';
// ์ฃผ์ด์ง ์กฐ๊ฑด์ด true์ผ ๋
if (done) message = '์๋ฃ';
// if ๋ฌธ์ ๋จ์ถ ํ๊ฐ๋ก ๋์ฒด ๊ฐ๋ฅํ๋ค.
// done์ด true๋ผ๋ฉด message์ '์๋ฃ'๋ฅผ ํ ๋น
message = done && '์๋ฃ';
console.log(message); // ์๋ฃ
์กฐ๊ฑด์ด Falsy ๊ฐ์ผ ๋ ๋ฌด์ธ๊ฐ๋ฅผ ํด์ผ ํ๋ค๋ฉด ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์ ํํ์์ผ๋ก if๋ฌธ์ ๋์ฒดํ ์ ์๋ค.
var done = false;
var message = '';
// ์ฃผ์ด์ง ์กฐ๊ฑด์ด false์ผ ๋
if (!done) message = '๋ฏธ์๋ฃ';
// if ๋ฌธ์ ๋จ์ถ ํ๊ฐ๋ก ๋์ฒด ๊ฐ๋ฅํ๋ค.
// done์ด false๋ผ๋ฉด message์ '๋ฏธ์๋ฃ'๋ฅผ ํ ๋น
message = done || '๋ฏธ์๋ฃ';
console.log(message); // ๋ฏธ์๋ฃ
var elem = null;
// elem์ด null ๋๋ undefined์ด๋ฉด undefined๋ฅผ ๋ฐํํ๊ณ ,
// ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐํญ์ ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ๋ค.
var value = elem?.value;
console.log(value); // undefined
// ์ขํญ์ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ด๋ฉด ์ฐํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๊ณ ,
// ๊ทธ๋ ์ง ์์ผ๋ฉด ์ขํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๋ค.
var foo = null ?? "default string";
console.log(foo); // "default string"