์๋ฐ์คํฌ๋ฆฝํธ ํ๋ณํ ์๋ฒฝ ๊ฐ์ด๋
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด "5" + 1์ด "51"์ด ๋๊ณ , "5" - 1์ 4๊ฐ ๋๋ ์ํฉ์ ๋ง์ฃผํ๊ฒ ๋ฉ๋๋ค. ์ฒ์์๋ ํผ๋์ค๋ฌ์ธ ์ ์์ง๋ง, ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ๋ณํ(Type Conversion) ๋ฉ์ปค๋์ฆ ๋๋ฌธ์
๋๋ค.
ํ๋ณํ์ ํ ๋ฐ์ดํฐ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ํ์ ์ ์ง์ ํ์ง ์์๋ ๋ฐํ์์์ ์๋์ผ๋ก ํ์ ์ด ๊ฒฐ์ ๋๊ณ ๋ณํ๋ฉ๋๋ค. ์ด๋ฐ ํน์ฑ์ ๊ฐ๋ฐ์ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ง๋ง, ์์์น ๋ชปํ ๋ฒ๊ทธ์ ์์ธ์ด ๋๊ธฐ๋ ํฉ๋๋ค.
์ด ๊ธ์์๋ ๋ช ์์ ํ๋ณํ๊ณผ ์๋ฌต์ ํ๋ณํ์ ์ฐจ์ด๋ถํฐ ๊ฐ์ฒด์ ํ๋ณํ, ๊ทธ๋ฆฌ๊ณ ์ค๋ฌด์์ ์ฃผ์ํด์ผ ํ ํจ์ ๊น์ง ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ณํ์ ๋ชจ๋ ๊ฒ์ ๋ค๋ฃน๋๋ค. ์ด ๊ฐ์ด๋๋ฅผ ํตํด ํ๋ณํ์ ์๋ ์๋ฆฌ๋ฅผ ์ ํํ ์ดํดํ๊ณ , ๋ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋ ๊ฑฐ์์.
๋ช ์์ ํ๋ณํ vs ์๋ฌต์ ํ๋ณํ
์๋ฐ์คํฌ๋ฆฝํธ์ ํ๋ณํ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ฉ๋๋ค.
๋ช
์์ ํ๋ณํ(Explicit Type Conversion)์ ๊ฐ๋ฐ์๊ฐ ์๋๋ฅผ ๊ฐ์ง๊ณ ์ง์ ํ์
์ ๋ณํํ๋ ๊ฒ์
๋๋ค. String(), Number(), Boolean() ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํด ๋ช
ํํ๊ฒ ํ์
์ ๋ฐ๊ฟ๋๋ค.
์๋ฌต์ ํ๋ณํ(Implicit Type Conversion ๋๋ Type Coercion)์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์๋์ผ๋ก ํ์ ์ ๋ณํํ๋ ๊ฒ์ ๋๋ค. ์ฐ์ฐ์๋ ํจ์๊ฐ ์์ํ๋ ํ์ ๊ณผ ๋ค๋ฅธ ๊ฐ์ ๋ฐ์์ ๋ ์๋์ผ๋ก ๋ณํ์ด ์ผ์ด๋ฉ๋๋ค.
// ๋ช
์์ ํ๋ณํ
const num = Number("123"); // ๋ฌธ์์ด โ ์ซ์
// ์๋ฌต์ ํ๋ณํ
const result = "5" + 1; // "51" (์ซ์ 1์ด ๋ฌธ์์ด๋ก ๋ณํ๋จ)
๋ช ์์ ํ๋ณํ์ ์ฝ๋์ ์๋๋ฅผ ๋ช ํํ๊ฒ ๋๋ฌ๋ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์ต๋๋ค. ๋ฐ๋ฉด ์๋ฌต์ ํ๋ณํ์ ํธ๋ฆฌํ์ง๋ง ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค ์ ์์ด์.
๋ช ์์ ํ๋ณํ ๊ธฐ๋ฒ
๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ
๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
String() ํจ์ ์ฌ์ฉ
String() ํจ์๋ ์ด๋ค ๊ฐ์ด๋ ๋ฌธ์์ด๋ก ๋ณํํฉ๋๋ค.
String(123); // "123"
String(true); // "true"
String(null); // "null"
String(undefined); // "undefined"
.toString() ๋ฉ์๋ ์ฌ์ฉ
๋๋ถ๋ถ์ ๊ฐ์ .toString() ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ์ง๋ง null๊ณผ undefined๋ ์ด ๋ฉ์๋๊ฐ ์์ด์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
(123).toString(); // "123"
true.toString(); // "true"
[1, 2, 3].toString(); // "1,2,3"
// null๊ณผ undefined๋ ์๋ฌ ๋ฐ์
// null.toString(); // TypeError
๋น ๋ฌธ์์ด๊ณผ ์ฐ๊ฒฐ
๋น ๋ฌธ์์ด("")๊ณผ + ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ๋ฌธ์์ด๋ก ๋ณํํ ์ ์์ต๋๋ค.
123 + ""; // "123"
true + ""; // "true"
null + ""; // "null"
์ซ์๋ก ๋ณํํ๊ธฐ
์ซ์๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
Number() ํจ์ ์ฌ์ฉ
Number() ํจ์๋ ๋ฌธ์์ด์ด๋ ๋ถ๋ฆฐ ๊ฐ์ ์ซ์๋ก ๋ณํํฉ๋๋ค. ๋ณํํ ์ ์๋ ๊ฐ์ NaN(Not a Number)์ ๋ฐํํฉ๋๋ค.
Number("123"); // 123
Number("123abc"); // NaN
Number(true); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
Number(" 123 "); // 123 (์๋ค ๊ณต๋ฐฑ ์ ๊ฑฐ)
parseInt()์ parseFloat() ์ฌ์ฉ
parseInt()์ parseFloat()๋ ๋ฌธ์์ด์ ์๋ถ๋ถ๋ถํฐ ์ซ์๋ฅผ ํ์ฑํฉ๋๋ค. ์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ๋ง๋๋ฉด ๊ทธ ์๊น์ง๋ง ๋ณํํฉ๋๋ค.
parseInt("123", 10); // 123
parseInt("123px", 10); // 123 (px๋ ๋ฌด์)
parseInt("abc123", 10); // NaN (์ซ์๋ก ์์ํ์ง ์์)
parseFloat("3.14"); // 3.14
parseFloat("3.14.15"); // 3.14 (์ฒซ ๋ฒ์งธ ์์์ ๊น์ง๋ง)
parseInt()์ ๋ ๋ฒ์งธ ์ธ์๋ ์ง๋ฒ(radix)์ ๋ํ๋
๋๋ค. 10์ง์๋ก ๋ณํํ ๋๋ 10์ ๋ช
์ํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
๋จํญ ๋ํ๊ธฐ ์ฐ์ฐ์
๋จํญ + ์ฐ์ฐ์๋ ๊ฐ์ ์ซ์๋ก ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
+"123"; // 123
+"10"; // 10
+true; // 1
+false; // 0
+"abc"; // NaN
๋ถ๋ฆฐ์ผ๋ก ๋ณํํ๊ธฐ
Boolean() ํจ์ ์ฌ์ฉ
Boolean() ํจ์๋ ๊ฐ์ ๋ถ๋ฆฐ์ผ๋ก ๋ณํํฉ๋๋ค.
Boolean(1); // true
Boolean(0); // false
Boolean("hello"); // true
Boolean(""); // false
Boolean([]); // true (๋น ๋ฐฐ์ด๋ truthy)
Boolean({}); // true (๋น ๊ฐ์ฒด๋ truthy)
Falsy ๊ฐ vs Truthy ๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ์๋ false๋ก ๋ณํ๋๋ ํน๋ณํ ๊ฐ๋ค์ด ์์ต๋๋ค. ์ด๋ฅผ falsy ๊ฐ์ด๋ผ๊ณ ํฉ๋๋ค.
Falsy ๊ฐ (์ด 8๊ฐ):
false0-00n(BigInt 0)NaN""(๋น ๋ฌธ์์ด)nullundefined
์ด ์ธ์ ๋ชจ๋ ๊ฐ์ truthy ๊ฐ์ ๋๋ค. ์ฃผ์ํ ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋ค๋ truthy๋ผ๋ ๊ฒ์ ๋๋ค:
Boolean("false"); // true (๋ฌธ์์ด "false")
Boolean("0"); // true (๋ฌธ์์ด "0")
Boolean([]); // true (๋น ๋ฐฐ์ด)
Boolean({}); // true (๋น ๊ฐ์ฒด)
Boolean(" "); // true (๊ณต๋ฐฑ ๋ฌธ์)
Boolean(function(){}); // true (ํจ์)
์๋ฌต์ ํ๋ณํ์ ๋ค์ํ ์ํฉ
๋ฌธ์์ด ์ปจํ ์คํธ
+ ์ฐ์ฐ์์์ ํผ์ฐ์ฐ์ ์ค ํ๋๋ผ๋ ๋ฌธ์์ด์ด๋ฉด, ๋ค๋ฅธ ์ชฝ๋ ๋ฌธ์์ด๋ก ๋ณํ๋ฉ๋๋ค.
"5" + 1; // "51"
1 + "5"; // "15"
"Hello" + true; // "Hellotrue"
"Result: " + 100; // "Result: 100"
ํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ ๋ํ ๋๋ ์์๊ฐ ์ค์ํฉ๋๋ค:
1 + 2 + "3"; // "33" (1+2=3, 3+"3"="33")
"1" + 2 + 3; // "123" ("1"+2="12", "12"+3="123")
์ซ์ ์ปจํ ์คํธ
+๋ฅผ ์ ์ธํ ์ฐ์ ์ฐ์ฐ์(-, *, /, %)๋ ํผ์ฐ์ฐ์๋ฅผ ์ซ์๋ก ๋ณํํฉ๋๋ค.
"5" - 1; // 4
"5" * "2"; // 10
"5" / 2; // 2.5
"5" % 2; // 1
"10" - "3"; // 7
์์ธ์ ์ผ๋ก ๋ณํํ ์ ์๋ ๊ฒฝ์ฐ NaN์ด ๋ฉ๋๋ค:
"abc" - 1; // NaN
"5" * "abc"; // NaN
๋ถ๋ฆฐ ์ปจํ ์คํธ
์กฐ๊ฑด๋ฌธ(if, else)์์๋ ๊ฐ์ด ์๋์ผ๋ก ๋ถ๋ฆฐ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
if ("") {
console.log("๋น ๋ฌธ์์ด"); // ์คํ ์ ๋จ
}
if ("Hello") {
console.log("๋ฌธ์ ์์"); // โ
์คํ๋จ
}
if (0) {
console.log("0"); // ์คํ ์ ๋จ
}
if ([]) {
console.log("๋ฐฐ์ด"); // โ
์คํ๋จ (๋น ๋ฐฐ์ด์ truthy)
}
๋
ผ๋ฆฌ ์ฐ์ฐ์(&&, ||, !)๋ ๋ถ๋ฆฐ ์ปจํ
์คํธ๋ฅผ ๋ง๋ญ๋๋ค:
!!"hello"; // true
!!0; // false
"text" && 5; // 5 (์ฒซ ๋ฒ์งธ๊ฐ truthy๋ฉด ๋ ๋ฒ์งธ ๋ฐํ)
0 || "default"; // "default" (์ฒซ ๋ฒ์งธ๊ฐ falsy๋ฉด ๋ ๋ฒ์งธ ๋ฐํ)
๋์จํ ๋๋ฑ ๋น๊ต (==)
== ์ฐ์ฐ์๋ ํ์
์ด ๋ค๋ฅผ ๋ ์๋ฌต์ ํ๋ณํ์ ์ํํฉ๋๋ค.
"5" == 5; // true (๋ฌธ์์ด "5"๊ฐ ์ซ์ 5๋ก ๋ณํ)
"0" == false; // true (๋ ๋ค 0์ผ๋ก ๋ณํ)
0 == ""; // true (๋น ๋ฌธ์์ด์ด 0์ผ๋ก ๋ณํ)
null == undefined; // true (ํน์ ์ผ์ด์ค)
null == 0; // false (null์ 0์ผ๋ก ๋ณํ๋์ง ์์)
์ด๋ฐ ์์์น ๋ชปํ ๋์ ๋๋ฌธ์ == ๋์ ์๊ฒฉํ ๋๋ฑ ๋น๊ต ์ฐ์ฐ์ ===๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
"5" === 5; // false
"0" === false; // false
0 === ""; // false
๊ฐ์ฒด์ ํ๋ณํ
๊ฐ์ฒด๋ ์์ ๊ฐ์ผ๋ก ๋ณํ๋ ๋ ํน๋ณํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
toString()๊ณผ valueOf() ๋ฉ์๋
๊ฐ์ฒด๊ฐ ๋ฌธ์์ด์ด๋ ์ซ์๋ก ๋ณํ๋ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค์ ์์๋ก ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค:
- ๋ฌธ์์ด ์ปจํ
์คํธ:
toString()โvalueOf() - ์ซ์ ์ปจํ
์คํธ:
valueOf()โtoString()
const obj = {
toString() {
return "๊ฐ์ฒด";
},
valueOf() {
return 42;
}
};
String(obj); // "๊ฐ์ฒด" (toString ํธ์ถ)
Number(obj); // 42 (valueOf ํธ์ถ)
obj + ""; // "๊ฐ์ฒด" (๋ฌธ์์ด ์ปจํ
์คํธ)
obj - 0; // 42 (์ซ์ ์ปจํ
์คํธ)
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ๋ณํ ๋์:
String([1, 2, 3]); // "1,2,3"
String({}); // "[object Object]"
Number([]); // 0 (๋น ๋ฐฐ์ด์ 0)
Number([5]); // 5 (์์๊ฐ ํ๋๋ฉด ๊ทธ ๊ฐ)
Number([1, 2]); // NaN (์์๊ฐ ์ฌ๋ฌ ๊ฐ)
JSON.stringify()์ JSON.parse()
JSON ํ์์ผ๋ก ๋ณํํ ๋๋ ์ ์ฉ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// ๊ฐ์ฒด โ JSON ๋ฌธ์์ด
JSON.stringify({ a: 1, b: 2 }); // '{"a":1,"b":2}'
// JSON ๋ฌธ์์ด โ ๊ฐ์ฒด
JSON.parse('{"a":1,"b":2}'); // { a: 1, b: 2 }
| ํจ์ | ์ญํ |
|---|---|
JSON.stringify() |
๊ฐ์ฒด โ JSON ๋ฌธ์์ด |
JSON.parse() |
JSON ๋ฌธ์์ด โ ๊ฐ์ฒด |
Date ๊ฐ์ฒด ๋ณํ
Date ๊ฐ์ฒด๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณํ๋ฉ๋๋ค.
const date = new Date("2025-10-22");
// ์ซ์๋ก ๋ณํ (ํ์์คํฌํ)
Number(date); // 1729544400000
// ๋ฌธ์์ด๋ก ๋ณํ
String(date); // "Wed Oct 22 2025 00:00:00 GMT+0