ํ ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ ์น์ 3 - JavaScript ์ฌํ
์ฐธ์ด๋ ๊ฑฐ์ง์ ์๋ฏธํ์ง ์๋ ๊ฐ๋, ์กฐ๊ฑด๋ฌธ ๋ด์์ ์ฐธ์ด๋ ๊ฑฐ์ง์ผ๋ก ํ๊ฐํ๋ ํน์ง
let f1 = undefined;
let f2 = null;
let f3 = 0;
let f4 = -0;
let f5 = NaN;
let f6 = "";
let f7 = 0n; //ํฐ ์ซ์๋ฅผ ์ ์ฅํ๋ ๊ฐ
Falsyํ ๊ฐ์ ์ ์ธํ ๋ชจ๋ ๊ฐ
์ฒซ๋ฒ์จฐ ํผ์ฐ์ฐ์์์ ๊ฐ์ ๊ตฌํ ์ ์์ผ๋ฉด ๋ค์์ ํผ์ฐ์ฐ์์ ์ ๊ทผํ์ง ์๋ ๊ฒ
console.log (returnTrue() && returnFalse());
returnTrue์์ ๊ฐ์ ๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ๋ returnFalse๊น์ง ์ ๊ทผํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
function printName(person) {
const name = person && person.name;
console.log(name || "person์ ๊ฐ์ด ์์");
}
printName(); //person์ ๊ฐ์ด ์์
printName({ name: "์ด์ ํ" }); //์ด์ ํ
printName() ์์๋ person์ undefined ๊ฐ์ด ํ ๋น ๋์๊ธฐ์ ๋ฐ๋ผ์ name๋ undefined๊ฐ์ด๋ค. console.log์์๋ name ๊ฐ์ด undefined์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ๊ฐ์ ์ ๊ทผํ์ฌ, "person์ ๊ฐ์ด ์์" ์ด ์ถ๋ ฅ๋๋ค.
printName({ name: "๊ฐ๊ตดํ" }) ์์๋ name์ ๊ฐ์ด ๊ฐ๊ตดํ์ด๊ธฐ ๋๋ฌธ์ console.log์์๋ name๋ง ๊ณ ๋ คํ์ฌ ๊ฒ๊ตดํ๊ฐ ์ถ๋ ฅ๋๋ค.
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์์ ํ ๋น๋ ๊ฐ๋ค์ ๋ชจ๋ ๋ถํดํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๊ฐ์ด๋ค.
let arr = [1, 2, 3];
let [one, two, three, four = 4] = arr;
let person = {
name: "๊น์์ง",
age: 22,
hobby: "์ผ๊ตฌ",
};
let { name, age, hobby} = person;
console.log {name, age, hobby};
๊ตฌ์กฐ ๋ถํด ํ ๋น โ
const func = (person)=>{
person.name;
person.age;
.
.
.
}
func(person)
๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ด์ฉํ์ง ์์์ ๋๋ ์ด๋ฐ์์ผ๋ก ์ผ์ผ์ด person.๊ฐ์ฒด์ ์ ๊ทผํ์ด์ผํ๋ค.
๊ตฌ์กฐ ๋ถํด ํ ๋น โญ
const func = ({ name, age, hobby, extra }) => {
console.log(name, age, hobby, extra);
};
func(person);
๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ด์ฉํ๋ฉด ๊ฐํธํ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ์ฅ๋ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ๊ฐ๋ณ๋ก ํฉ๋ฟ๋ ค์ฃผ๋ ์ญํ
Spread ์ฐ์ฐ์ ์ฌ์ฉ โ
let arr1 = [1,2,3];
let arr2 = [4,arr1[0], arr1[1], arr1[2]]
console.log(arr2); // 4,1,2,3
๋ฐฐ์ด์ด ๋ฐ๋๋ฉด ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๊ฒ ๋๋ค.
Spread ์ฐ์ฐ์ ์ฌ์ฉ โญ
let arr1 = [1,2,3];
let arr2 = [4,...arr1];
console.log(arr2); // 4,1,2,3
spread ์ฐ์ฐ์ ...๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
...rest ๋งค๊ฐ๋ณ์์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋๋จธ์ง ๋ชจ๋ ์ธ์๋ค์ด ๋ค ๋ฐฐ์ด ํํ๋ก ์ ์ฅ๋๋ค.
function funcB(...rest) {
console.log(rest);
}
funcB(...arr1); // [1,2,3]
function funcB(...rest)์์ ์ถ๊ฐ์ ์ธ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๊ณ ์ถ๋ค๋ฉดfunction funcB(one, two, ...rest)๋ก ์์ฑํ๋,...rest๊ฐ ๊ฐ์ฅ ๋ค์ ์์ผํ๋ค.
Numver, String, Boolean ๋ฑ ๊ฐ ์์ฒด๋ก์จ ๋ณ์์ ์ ์ฅ๋๊ณ ๋ณต์ฌ๋๋ค.
๊ฐ๋ฅดํค๋ ๊ฐ์ด ๋ฌ๋ฆฌ์ง๋ ๊ฒ
๋ถ๋ณ๊ฐ์ด๋ค.
Object, Array, Function ๋ฑ ์ฐธ์กฐ๊ฐ์ ํตํด ๋ณ์์ ์ ์ฅ๋๊ณ ๋ณต์ฌ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์์ ๊ฐ์ด ์์ ๋ฌ๋ผ์ง๋ ๊ฒ
๊ฐ๋ณ๊ฐ์ด๋ค.
์ฃผ์์ฌํญ
1. ์๋์น ์๊ฒ ๊ฐ์ด ์์ ๋ ์ ์๋ค.
์์ ๋ณต์ฌ : ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํ๋ค. ์๋ณธ ๊ฐ์ฒด๊ฐ ์์ ๋ ์ ์์ด์ ์ํํ๋ค.
๊น์ ๋ณต์ฌ : ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ํ๋กํผํฐ๋ง ๋ฐ๋ก ๋ณต์ฌํ๋ค. ์๋ณธ ๊ฐ์ฒด๊ฐ ์์ ๋ ์ผ์ด ์์ด์ ์์ ํ๋ค.
2. ๊ฐ์ฒด๊ฐ์ ๋น๊ต๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐธ์กฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
ํ๋กํผํฐ๊ฐ ๊ฐ๋ค๊ณ ๊ฐ์ ๊ฐ์ด ์๋๋ผ ์ฐธ์กฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๊ฐ์ธ์ง ์๋์ง ํ๋จํ๊ธฐ ๋๋ฌธ์, ํ๋กํผํฐ๊ฐ ๊ฐ์๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐธ์กฐํ๋ค๋ฉด ๊ฐ์ง ์์ ๊ฐ์ด๋ค. ์ฐธ์กฐ๊ฐ์ด ์๋ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ํ๋ณํํ๋ jsonStringify ๋ด์ฅํจ์๋ฅผ ์ด์ฉํด์ ์ฐธ์กฐ๊ฐ์ด ์๋ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ๊ฒ ๋ง๋ค ์ ์๋ค.
3. ๋ฐฐ์ด๊ณผ ํจ์๋ ์ฌ์ค ๊ฐ์ฒด์ด๋ค.
๋ฐฐ์ด&ํจ์ ๋ชจ๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
์ํ๋?
๋ฐฐ์ด, ๊ฐ์ฒด์ ์ ์ฅ๋ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ์์๋๋ก ํ๋์ฉ ์ ๊ทผํ๋ ๊ฒ์ ๋งํจ
for of ๋ฐ๋ณต๋ฌธ
let arr = [1,2,3];
for(let item of arr) {
console.log(item);
}
let person = {
name: "๊น์์ง",
age: 22,
hobby: "์ผ๊ตฌ",
};
let keys = Object.keys(person);
console.log(keys); // name, age, hobby
let values = Object.values(person);
console.log(value); // ๊น์์ง, 22, ์ผ๊ตฌ
for(let key in person) {
const value = person[key];
console.log(key, value); // name ๊น์์ง , age 22, hobby ์ผ๊ตฌ
}
๋ฐฐ์ด์ ๋งจ ๋ค์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋
๋ฐฐ์ด์ด๋ฆ.push(์ถ๊ฐํ๊ณ ์ถ์ ์์๋ค);
๋ฐฐ์ฌ๋ฆ ๋งจ ๋ค์ ์๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ
๋ฐฐ์ด์ด๋ฆ.pop();
๋ฐฐ์ด์ ๋งจ ์์ ์๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ
๋ฐฐ์ด์ด๋ฆ.shift();
๋ฐฐ์ด์ ๋งจ ์์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋
๋ฐฐ์ด์ด๋ฆ.unshift(์ถ๊ฐํ๊ณ ์ถ์ ์์๋ค);
push ์ pop ์ ๋นํด shift ์ unshift ๊ฐ ๋๋ฆฌ๋ค.
๊ฐ์์ฒ๋ผ, ๋ฐฐ์ด์ ํน์ ๋ฒ์๋ฅผ ์๋ผ๋ด์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ
๋ฐฐ์ด์ด๋ฆ.slice(์๋ฅด๊ณ ์ถ์ ์ฒซ๋ฒ์งธ ๋ฒ์์ ์ธ๋ฑ์ค, ์๋ฅด๊ณ ์ถ์ ๋ง์ง๋ง ๋ฒ์์ ์ธ๋ฑ์ค + 1);
๋ฐฐ์ด์ด๋ฆ.slice(์ฒจ๋ถํฐ ๋ช๊ฐ๊น์ง ์๋ฅด๊ณ ์ถ๋ค์ ์ธ๋ฑ์ค);
๋ฐฐ์ด์ด๋ฆ.slice(- ๋ง์ง๋ง ๋ช๊ฐ๊น์ง ์๋ฅด๊ณ ์ถ๋ค์ ์ธ๋ฑ์ค);
๋๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฐฐ์ด์ ์ด์ด ๋ถ์ฌ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
๋ฐฐ์ด์ด๋ฆ.concat(์๋ก๋ง๋ค ๋ฐฐ์ด);
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์, ๊ฐ๊ฐ์ ์์์ ํน์ ๋์์ ์ํ์ํค๋ ๋ฉ์๋
๋ฐฐ์ด์ ํน์ ์์๊ฐ ์๋์ง ํ์ธํ๋ ๋ฉ์๋
ํน์ ์์์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์์ ๋ฐํํ๋ ๋ฉ์๋
๋ฐฐ์ด์ ์์๊ฐ์ด ๊ฐ๋ค๋ฉด ์์ ์์นํ index๊ฐ์ ์ถ๋ ฅํ๋ค.
์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ๋ฐฐ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉด -1 ๊ฐ์ ์ถ๋ ฅ
์์ ๋น๊ต๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ํ๋กํผํฐ ๊ธฐ์ค์ผ๋ก ๋น๊ต๊ฐ ์ด๋ฃจ์ด์ง์ง ์๋๋ค.
๋ฐ๋ผ์ ์ด๋๋ findIndex๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์, ์ฝ๋ฐฑํจ์๋ฅผ ๋ง์กฑํ๋ ํจ์
ํน์ ์์์ ์ธ๋ฑ์ค(์์น)๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ๋ฐฐ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉด -1 ๊ฐ์ ์ถ๋ ฅ
ํ๋กํผํฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋น๊ต ์์ผ์ค ์ ์๋ค.
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ง์กฑํ๋ ์์๋ฅผ ์ฐพ๋๋ฐ, ์์๋ฅผ ๊ทธ๋๋ก ๋ฐํ
๊ธฐ์กด ๋ฐฐ์ด์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ค๋ง ํํฐ๋งํ์ฌ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์, ๊ฐ๊ฐ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๊ฐ๋ค์ ๋ชจ์์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ
๋ฑ์ด์ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ ๋ฉ์๋
์ซ์์ ๋์๊ด๊ณ๋ฅผ ๋ฐ์ง๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋์๊ด๊ณ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด ์กฐ๊ฑด๋ฌธ์ ์์ฑํด์ผํจ.
function compare(a, b) {
if (a > b) {
return 1;
} else if (a < b) {
return -1;
} else {
return 0;
}
}
let arr = [10, 5, 3];
arr.sort(compare);
console.log(arr); // [3, 5, 10]
์ ๋ ฌ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ ๋ฉ์๋
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์ฑ ์ ๋ฐํํ๋ ๋ฉ์๋
๊ตฌ๋ถ์๋ ๊ธฐ๋ณธ์ด
,์ธ๋ฐ, ๊ตฌ๋ถ์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด๋ฐฐ์ด์ด๋ฆ.join(๋ฐ๊พธ๊ณ ์ถ์ ๊ตฌ๋ถ์);ํ์์ผ๋ก ์์ฑํ๋ฉด ๋๋ค.
let date1 = new Date(); //์์ฑ์ -> () ์์ด ๋น์ด์์ผ๋ฉด ํ์ฌ ์๊ฐ ์ถ๋ ฅ
let date2 = new Date("๋
๋/์/์ผ/์:๋ถ:์ด");
ํน์ ์๊ฐ์ด "0000๋ ๋.00์.00์ผ 00์ 00๋ถ 00์ด"๋ก ๋ถํฐ ๋ช ms๊ฐ ์ง๋ฌ๋์ง๋ฅผ ์๋ฏธํ๋ ์ซ์๊ฐ
let year = date1.getFullYear();
let month = date1.getMonth() + 1; //๋ฌ์ 0์ ๋ถํฐ ์์ํ๊ธฐ์ +1 ํด์ค์ผํ๋ค.
let date = date1.getDate();
let hour = date1.getHours();
let minute = date1.getMinutes();
let seconds = date1.getSeconds();
date1.setFullYear(2023);
date1.setMonth(2); //3์์ ์๋ฏธ
date1.setDate(30);
date1.setHours(23);
date1.setMinutes(59);
date1.setSeconds(59);
console.log(date1.toDateString()); // Fri jul 04 2025
console.log(date1.toLocaleString()); // 2025.07.04
์์
์ ์์๋๋ก ํ๋์ฉ ์ฒ๋ฆฌ
Thread: ์์
์ ์ง์ ์คํํ๊ณ ๋ ์ฒ๋ฆฌํด์ฃผ๋ ์ญํ
๋จ์ : ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฉํฐ thread ๋ฐฉ์์ผ๋ก ํด๊ฒฐ ๋ถ๊ฐ๋ฅ(thread ํ๋๋ง ์กด์ฌ)ํ์ฌ, ๋ํ๋ ๋ฐฉ์
์์ ์์
๋ค์ ์ข
๋ฃํ์ง ์๊ณ ๋ ๋ค์ ์์
์ ์ํํ ์ ์๋ค.
๋น๋๊ธฐ ์์
์ด ๊ฐ๋ฅํ ์ด์ ? Web APIs๋ผ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ๋ณ๋์ ๊ณต๊ฐ์์ ๋ฐ๋ก ์คํ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
function add(a, b, callback) {
setTimeout(() => {
const sum = a + b;
callback(sum);
}, 3000);
}
add(1, 2, (value) => {
console.log(value); // 3
});
add ํจ์ ํธ์ถ-> setTimeout ํจ์๊ฐ ํธ์ถ-> callback ํจ์๋ฅผ 3์ด ๋ค์ ์คํ-> callback ํจ์์์ sum์ด๋ผ๋ ๊ฐ์ ๊ณ์ฐ-> ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ callbackํจ์๋ฅผ ๋ค์ ํธ์ถ-> setTimeout ํจ์๊ฐ ๋๋จ-> callback ํจ์๊ฐ ํ๋ฒ ๋ ์คํ-> ๋งค๊ฐ๋ณ์ 3 ๊ฐ์ด ์ฝ์์ ์ถ๋ ฅ
orderFood((food) => {
console.log(food);
cooldownFood(food, (cooldownedFood) => {
console.log(cooldownedFood);
freezeFood(cooldownedFood, (freezedFood) => {
console.log(freezedFood);
});
});
});
์ฝ๋ฐฑํจ์๋ฅผ ์ด์ฉํด์ ๋ฐ์์จ ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋ค๋ฅธ ๋น๋๊ธฐ ์์ ์ ์ธ์๋ก ๋ฃ์ด์ฃผ๋ ์ฝ๋๊ฐ ๊ณ์ ๋ฐ๋ณต์ด ๋๋ค ๋ณด๋ฉด์ ์ฝ๋ฐฑ ํจ์ ์์์ ๊ณ์ ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ์ธ๋ดํธ(๋ค์ฌ์ฐ๊ธฐ)๋ก ์ธํด ์ฝ๋๊ฐ ๊น์ด์ง๋ฉด์ ๊ฐ๋ ์ฑ ์ ํ => ์ฝ๋ฐฑ์ง์ฅ
๋น๋๊ธฐ ์์
์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ด์ฅ ๊ฐ์ฒด
executor: ์ค์ ๋ก ๋น๋๊ธฐ ์์
์ ์คํํ๋ ์ฝ๋ฐฑํจ์
์์ง ์์ ์ด ์๋ฃ๋์ง ์์ ์ํ
๋น๋๊ธฐ ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ฌด๋ฆฌ ๋ ์ํ
๋๊ธฐ -> ์ฑ๊ณต ์ํ : ํด๊ฒฐ(resolve)
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("์๋
");
resolve();
}, 2000);
});
setTimeout(() => {
console.log(promise);
}, 3000); // ์๋
, [[PromiseState]]: "fulfilled"
PromiseState ๋ด๋ถ ํ๋กํผํฐ์ ๊ฐ "fulfilled"
๋น๋๊ธฐ ์์
์ด ์คํจํ ์ํ
๋๊ธฐ -> ์คํจ ์ํ: ๊ฑฐ๋ถ(reject)
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("์๋
");
reject("์ ์คํจํ๋์ง ์ด์ ...");
}, 2000);
});
setTimeout(() => {
console.log(promise);
}, 3000); //Uncaught (in promise) ์ ์คํจํ๋์ง ์ด์ ..., [[PromiseState]]: "rejected"
PromiseState ๋ด๋ถ ํ๋กํผํฐ์ ๊ฐ "rejected"
Promise๊ฐ ์ฑ๊ณตํ๊ฒ ๋๋ฉด(resolve ํธ์ถ), then ๋ฉ์๋์ ์ ๋ฌํ ์ฝ๋ฐฑ ํจ์ ์คํ & resolve ์ ์ธ์๋ก ์ ๋ฌํ ๊ฒฐ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก๊น์ง ์ ๊ณต
promise.then((value) => {
console.log(value); // 20
});
Promise๊ฐ ์คํจํ๊ฒ ๋๋ฉด(reject ํธ์ถ), catch ๋ฉ์๋์ ์ ๋ฌํ ๊ณจ๋ฐฑ ํจ์ ์คํ & reject ์ ์ธ์๋ก ์ ๋ฌํ ๊ฒฐ๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก๊น์ง ์ ๊ณต
promise.catch((error) => {
console.log(error);
}); //num์ด ์ซ์๊ฐ ์๋๋๋ค. (์ฝ๋ ์๋ ฅ: reject ํจ์ ๊ฒฐ๊ณผ ๊ฐ)
promise
.then((value) => {
console.log(value);
})
.catch((error) => {
console.log(error);
});
add10(0)
.then((result) => {
console.log(result);
return add10(result);
})
.then((result) => {
console.log(result);
});
Promise๋ ์๋ก์ด ํ๋ก๋ฏธ์ค return(๋ฐํ)์ด ๊ฐ๋ฅํ๋ค. ๋ฐํ๋ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๋ ๊ฒฐ๊ณผ๊ฐ์ด ๋๋ค.
์ด๋ค ํจ์๋ฅผ ๋น๋๊ธฐ ํจ์๋ก ๋ง๋ค์ด์ฃผ๋ ํค์๋
ํจ์๊ฐ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋๋ก ๋ณํํด์ฃผ๋ ํค์๋
async function ํจ์๋ช
() //ํจ์๋ฅผ ๋น๋๊ธฐ๋ก ๋ฐ๊ฟ์ค
async ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅ
๋น๋๊ธฐ ํจ์๊ฐ ๋ค ์ฒ๋ฆฌ๋๊ธฐ๋ฅผ ๊ธฐ๋ฌ๋ฆฌ๋ ์ญํ
๋ ์ด์ then ์ฌ์ฉํ์ง ์์๋ ๋จ
async function printData() {
const data = await getData();
await๋ ํ๋ก๋ฏธ์ค์ ๋น๋๊ธฐ ์์ ์ด ์ข ๋ฃ๋๊ธฐ๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ข ๋ฃ๊ฐ ๋๋ฉด ๊ฒฐ๊ณผ ๊ฐ์ data ๋ณ์์ ๋ฃ์ด์ฃผ๋ ์ญํ ์ ํ๋ค.