ํจ์?
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ (์๋ฐ์์๋ ๋ฉ์๋๋ผ๋ ์ฉ์ด๋ก ์ฌ์ฉ)
- ํน์ ์์ ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ผ ํ๋ ๊ฒฝ์ฐ, ํด๋น ์์ ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ๋ง๋ค๊ฒ ๋๋๋ฐ ์ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ ์ ๋๋ค.
- ์ ๋ ฅ๊ฐ์ ๊ฒ์ฆํ๊ณ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ, ์์ธ๋ฅผ ๋ฐ์์ํฌ์ ์์ต๋๋ค. (try ~ catch)
- ์ ์ญ ๋ณ์ ์ฌ์ฉ์ ์ค์ด๊ณ , ํจ์ ๋ด์์๋ง ์ ํจํ ๋ณ์(์ง์ญ๋ณ์)๋ฅผ ์ ์ธ ํฉ๋๋ค.
- ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์ ์ ํฉ๋๋ค.
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ ์ ํฉ๋๋ค.
- ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์์, ๋ค๋ฅธ ํจ์์์ ์คํ ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ [ํจ์ ์ ์ธ๋ฌธ] ๋๋ [ํจ์ ํํ์]์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
1๏ธโฃํจ์ ์ ์ธ๋ฌธ
function
ํค์๋๋ก ์ ์ธํ๋ฉฐ ํจ์ ์ด๋ฆ์ ๊ฐ์ง๋๋ค.- ํธ์ด์คํ ์ ์ํฅ์ ๋ฐ์ต๋๋ค. == ํจ์๊ฐ ์ ์ธ๋ ์์น์ ์๊ด์์ด ํธ์ถํ์ฌ ์คํํ ์ ์์
๐ก ํธ์ด์คํ : ํจ์๋ ๋ณ์๊ฐ ํด๋น ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด ์ฌ๋ ค์ง๋ ๊ฒ
function sum(p1, p2) {
let sum = p1 + p2;
return sum;
}
ํจ์๋ฅผ ์ด๋ฃจ๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํจ์ ์ ์ธ ํค์๋ function
- ํจ์๋ช
- ์ ๋ ฅ ํ๋ผ๋ฏธํฐ (์ต์ )
- ์ฝ๋ ๋ธ๋ก
- ๋ฐํ๊ฐ(return) (์ต์ )
ํจ์๋ช ์ ์ฌ์ฉํด์ ํธ์ถ์ ํด์ผ๋ง ์คํ ๋ฉ๋๋ค.
let sum1 = sum(21,24); // ํจ์ ํธ์ถ
console.log(sum1); // ์ถ๋ ฅ
ํจ์์ switch๋ฌธ
function calculator(n1, n2, op) {
switch(op) {
case "+":
return add(n1, n2);
case "-":
return sub(n1, n2);
case "*":
return mul(n1, n2);
case "/":
return div(n1, n2);
}
}
function add(n1, n2) {
return n1 + n2;
}
function sub(n1, n2) {
return n1 - n2;
}
function mul(n1, n2) {
return n1 * n2;
}
function div(n1, n2) {
return n1 / n2;
}
console.log("๋ง์
: " + calculator(10, 20, "+"));
console.log("๋บ์
: " + calculator(10, 20, "-"));
console.log("๊ณฑ์
: " + calculator(10, 20, "*"));
console.log("๋๋์
: " + calculator(10, 20, "/"));
๐ฆ ํจ์์ ์ ์ธ๊ณผ ์คํ ์์
์์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ํจ์ ๊ตฌํ ์ด์ ์ ๋จผ์ ํธ์ถํ์ฌ๋ ์ ์ ์คํ ๋ฉ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๋๋ฅผ ํด์ํ ๋ ํจ์์ ์ ์ธ ๋ถ๋ถ์ ์ฝ๋์ ์์ชฝ์ผ๋ก ์ฎ๊ฒจ์ ๋จผ์ ํด์ ํฉ๋๋ค.(ํธ์ด์คํ )
console.log("๋ง์
: " + calculator(10, 20, "+"));
console.log("๋บ์
: " + calculator(10, 20, "-"));
console.log("๊ณฑ์
: " + calculator(10, 20, "*"));
console.log("๋๋์
: " + calculator(10, 20, "/"));
function calculator(n1, n2, op) {
switch(op) {
case "+":
return add(n1, n2);
case "-":
return sub(n1, n2);
case "*":
return mul(n1, n2);
case "/":
return div(n1, n2);
}
}
function add(n1, n2) {
return n1 + n2;
}
function sub(n1, n2) {
return n1 - n2;
}
function mul(n1, n2) {
return n1 * n2;
}
function div(n1, n2) {
return n1 / n2;
}
2๏ธโฃํจ์ ํํ์
- ๋ณ์์ ํจ์๋ฅผ ํ ๋นํด์ ์ฌ์ฉํ๋ ๋ฐฉ์ ์ ๋๋ค.
- ํจ์๋ ๊ฐ์ฒด์ ํ์๋ ์๋ฃํ ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฃํ์ ๋ณ์์ ํ ๋นํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํจ์๋ ๋ณ์์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํ ํจ์ ์ ์ ๋ฐฉ๋ฒ์ ํจ์ ํํ์์ด๋ผ๊ณ ํฉ๋๋ค.
- ํจ์ ํํ์์ ํธ์ด์คํ ์ด ์ ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ธ๋๋ ์์น๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํจ์ ํํ์์ ๋ณ์์ ํ ๋นํ๋ ํจ์์ ์๋ณ์๊ฐ ์์ผ๋ฉด [๋ค์ด๋ฐ ํจ์], ์์ผ๋ฉด [์ต๋ช ํจ์] ๋ผ๊ณ ๊ตฌ๋ถ ํฉ๋๋ค.
๐ก ๋ณดํต ํจ์ ํํ์์ ์ต๋ช ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ์ ๋๋ค.
์ต๋ช ํจ์
const ๋ณ์๋ช
= function();
const gugudan = function() {
for(let i = 1; i < 10; i++) {
console.log(`3 * ${i} = ${3 * i}`);
}
}
gugudan();
๋ค์ด๋ฐ ํจ์
const ๋ณ์๋ช
= function ์๋ณ์() {};
const gugudan = function naming(){
for(let i = 1; i < 10; i++) {
console.log(`3 * ${i} = ${3 * i}`);
}
}
gugudan();
โ ๏ธ ์๋ ์ฝ๋๋ ์๋ฌ ๋ฐ์
gugudan();
const gugudan = function naming(){
for(let i = 1; i < 10; i++) {
console.log(`3 * ${i} = ${3 * i}`);
}
}
3๏ธโฃํ์ดํ ํจ์
- ํ์ดํ ํจ์๋ ES6์์ ์ถ๊ฐ๋ ์๋ก์ด ํจ์ ์ ์ธ ๋ฐฉ๋ฒ ์ ๋๋ค.
- ํ์ดํ ํจ์๋ ํจ์ ์ ์ธ์๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
// ํจ์ ์ ์ธ๋ฌธ
console hi = function() {
return "์๋
ํ์ธ์.";
}
// ํ์ดํ ํจ์
console hi2 = () => "์๋
ํ์ธ์.";
๋งค๊ฐ๋ณ์์ ๋ฐ๋ฅธ ํํ์
// ๋งค๊ฐ๋ณ์๊ฐ 1๊ฐ๋ง ์์ ๊ฒฝ์ฐ
const hi = name => console.log(name + "๋ ์๋
ํ์ธ์.");
// ๋งค๊ฐ๋ณ์๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ
const hi2 = (name, age) => console.log(name + "์ " + age + "์ด์ด๋ค.");
// ๋งค๊ฐ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ
const hi3 = () => "์๋
ํ์ธ์?";
์๋์์ ๋งค๊ฐ๋ณ์์ ์ธ์์ ๊ดํด ๋ ์์ธํ๊ฒ ๋ค๋ฃจ์ด ๋ณด๊ฒ ์ต๋๋ค.
๋งค๊ฐ๋ณ์(parameter)์ ์ธ์(argument)
function ํจ์๋ช
(๋งค๊ฐ๋ณ์1, ๋งค๊ฐ๋ณ์2, ๋งค๊ฐ๋ณ์3 ...) {}
ํจ์๋ช
(์ธ์1, ์ธ์2, ์ธ์3 ...);
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ ํ ๋นํ์ง ์์ผ๋ฉด
undefined
๊ฐ์ผ๋ก ์ด๊ธฐํ ๋๋ ๊ฒ์ฒ๋ผ ๋งค๊ฐ๋ณ์๋ ํจ์ ํธ์ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉดundefined
๊ฐ์ด ํ ๋น๋์ด ์ฝ๋๋ฅผ ์คํํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ ํ ๋น
- ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋งค๊ฐ๋ณ์์๋
undefined
๊ฐ์ด ์๋์ผ๋ก ํ ๋น๋ฉ๋๋ค. - ES6 ๋ถํฐ๋ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ์ถ๊ฐ๋์์ต๋๋ค.
function sum(a = 10, b = 20) {
console.log(a, b);
}
sum(); // 10, 20
๐ก ์์์ ์ธ๊ธํ๋ฏ์ด ๋งค๊ฐ๋ณ์์ ๊ฐ์ ํ ๋น ์ํด๋ ์๋ฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ผ ํฉ๋๋ค.
const sum4 = (a = 10, b = 20, c) => console.log(a,b,c);
sum4(); // 10, 20, undefined
return๋ฌธ
- ํจ์๋ฅผ ํธ์ถํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํด์ผ ํ๋ฏ์ด, ํจ์ ์ธ๋ถ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ๋๋
return
๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
function sum(a = 10, b = 20) {
return a + b;
}
const result = sum(100, 200);
console.log("๊ฒฐ๊ณผ : " + result);
const sum = (num1, num2) => num1 + num2;
console.log("๊ฒฐ๊ณผ : " + sum(100, 200));
4๏ธโฃCallback ํจ์
- ํจ์์ ์ธ์๋ก ๋ค๋ฅธ ํจ์๋ฅผ ์ ๋ฌํ์ฌ ๊ทธ ํจ์๊ฐ ์คํ๋ ๋ ํธ์ถ๋๋ ํจ์ ์ ๋๋ค.
- ์ฆ, ์ฝ๋ฐฑ ํจ์๋ ํจ์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํจ์๋ก ์ ๋ฌํ๋ ๊ฒ ์ ๋๋ค.
- ์ฝ๋ฐฑ ํจ์๋ ๋น๋๊ธฐ์ ์ธ ์์ ์ ์ฒ๋ฆฌํ ๋ ๋ง์ด ์ฌ์ฉ ๋ฉ๋๋ค.
๐์๋ฅผ ๋ค์ด, ์๋ฒ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ์ด ์๋ฃ๋์์ ๋ ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ์ ํ ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ ์ฝ๋ฐฑ ํจ์๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ์ฒ๋ฆฌํ๋ ํจ์๊ฐ ๋ฉ๋๋ค.
๋น๋๊ธฐ์ ํ ํฌ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ๋คํธ์ํฌ ์๋ต ์ฒ๋ฆฌ
- ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๋์
- ์๋์ ์ผ๋ก ์๊ฐ ์ง์ฐ์ด ํ์ํ ๊ธฐ๋ฅ
ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋๊ธฐ๊ธฐ
function cry() {
console.log("cry");
}
function sing() {
console.log("sing");
}
function dance() {
console.log("dance");
}
// ์ผ๋ฐ ํจ์๋ก ํธ์ถ
function checkMood(mood) {
if(mood === "good") sing();
else cry();
}
checkMood("good");
checkMood("sad");
// ์ฝ๋ฐฑ ํจ์
function checkMoodCallback(mood, goodCall, badCall) {
if(mood === "good") goodCall();
else badCall();
}
checkMoodCallback("good", dance, cry);
checkMoodCallback("Not bad", dance, sing);
ํ์ด๋จธ ์ค์ ๊ณผ Callback ํจ์
function buy_tobe(item, price, quantity, callback) {
console.log(item + " ์ํ์ " + quantity + "๊ฐ ๊ณจ๋ผ์ ์ ์์๊ฒ ์ฃผ์์ต๋๋ค.");
setTimeout(function () {
console.log("๊ณ์ฐ์ด ํ์ํฉ๋๋ค.");
var total = price * quantity;
callback(total);
}, 2000);
}
function pay(n) {
console.log("์ง๋ถ ํ ๊ธ์ก์ : " + n + "์
๋๋ค.");
}
buy_tobe("\'๋ฐค๊ณ ๊ตฌ๋ง ๋ง์์\'", 1000, 5, pay);
์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ฝ๋ฐฑ ํจ์ ์ฌ์ฉํ๊ธฐ
- ์น ํ์ด์ง์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด ๋, ์ด๋ฒคํธ ํธ๋ค๋ฌ์์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ ํจ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
let btn = document.querySelector("#myBottn");
btn.addEventListener('click', callBtn);
function callBtn() {
console.log("Button์ด ๋๋ ค ์ก์ต๋๋ค.");
}
๐ ์ ์ฝ๋์์๋ addEventListener()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ์์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฆญ๋์์ ๋ ์คํํ ํจ์๋ฅผ ์ง์ ํ๊ณ ์์ต๋๋ค.
๋น๋๊ธฐ์ ์์ ์์ ์ฝ๋ฐฑ ํจ์ ์ฌ์ฉํ๊ธฐ
- ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ํ์ผ์ ์ฝ์ด์ฌ ๋, ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ธ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
function fetchData(callback) {
// ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋น๋๊ธฐ ํจ์
let data = ...
callback(data);
}
fetchData(function(data) {
console.log(data);
});
์ฝ๋ฐฑ(callback)๊ณผ ๋น๋๊ธฐ(asynchronous)๋ ์๋ก ๊ด๋ จ ์๋ ๊ฐ๋ ์ ๋๋ค. ์ฝ๋ฐฑ์ ํจ์์ ์ธ์๋ก ๋ค๋ฅธ ํจ์๋ฅผ ๋ฐ์๋ค์ด๋ ํจ์๋ฅผ ๋งํ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ธ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ์ ์ธ ์์ ์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํจ์์ ํน์ง ์ดํดํ๊ธฐ
์ค์ฝํ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ค์ฝํ์ ๋ฐ๋ผ ์ฐธ์กฐํ๋ ค๋ ์๋ณ์๋ฅผ ์ฐพ์ต๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค์ฝํ๋ [ํจ์ ์ค์ฝํ]์ [๋ธ๋ก ์ค์ฝํ] ๋ฐฉ์์ผ๋ก ๋๋์ด ์ง๋ฉฐ,
์ด์ ๋ฐ๋ผ [์ ์ญ ์ค์ฝํ]์ [์ง์ญ ์ค์ฝํ]๋ก ์ฐธ์กฐ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋๋ค.
ํจ์ ์ค์ฝํ
- ํจ์์์ ์ ์ํ ๋ธ๋ก๋ฌธ๋ง ์ค์ฝํ์ ์ ํจ ๋ฒ์๋ก ์ธ์
let a = 10; // ์ ์ญ์ค์ฝํ
function sum7() {
let a = 20; // ์ง์ญ์ค์ฝํ
console.log(`ํจ์ ๋ด๋ถ : ${a}`); // 20
}
sum7();
console.log(`ํจ์ ์ธ๋ถ : ${a}`); // 10
๋ธ๋ก ์ค์ฝํ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ ํจ์ ์ค์ฝํ๋ก ๋ฐ๋ฅด๋ ์ธ์ด์์ง๋ง, ES6์์
let
,const
ํค์๋๊ฐ ์ถ๊ฐ๋๋ฉด์ ๋ธ๋ก ์ค์ฝํ๋ ์ง์ํ๊ฒ ๋์์ต๋๋ค. - ๋ธ๋ก ์ค์ฝํ๋ {}๋ก ๊ตฌ์ฑ๋ ๋ธ๋ก๋ฌธ ๊ธฐ์ค์ผ๋ก ์ค์ฝํ์ ์ ํจ ๋ฒ์๋ฅผ ๋๋๋ ๋ฐฉ์ ์ ๋๋ค.
- ๐ก ๋ธ๋ก ์ค์ฝํ๋ ์ค์ง
let
,const
์นด์๋์์๋ง ๋ฐ์ํ๋ฏ๋ก ๊ฐ์ ์ฝ๋๋ฅผvar
ํค์๋๋ก ๋ณ๊ฒฝํ๋ฉด ์ฐธ์กฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
let, const
let b = 1;
{
let c = 12;
console.log(`์ฝ๋ ๋ธ๋ก ๋ด๋ถ b : ${b}`); // 1
console.log(`์ฝ๋ ๋ธ๋ก ๋ด๋ถ c : ${c}`); // 12
}
console.log(`์ฝ๋ ๋ธ๋ก ์ธ๋ถ b : ${b}`); // 1
console.log(`์ฝ๋ ๋ธ๋ก ์ธ๋ถ c : ${c}`); // ์ค๋ฅ
var
var d = 3;
{
var e = 15;
console.log(`์ฝ๋ ๋ธ๋ก ๋ด๋ถ d : ${d}`); // 3
console.log(`์ฝ๋ ๋ธ๋ก ๋ด๋ถ e : ${e}`); // 15
}
console.log(`์ฝ๋ ๋ธ๋ก ์ธ๋ถ d : ${d}`); // 3
console.log(`์ฝ๋ ๋ธ๋ก ์ธ๋ถ e : ${e}`); // 15 (ํธ์ด์คํ
์ ์ํด ์ค๋ฅ ์๋จ..)
ํจ์ ํธ์ด์คํ
- ํธ์ด์คํ ์ด๋ ์ฝ๋๋ฅผ ์ ์ธ๊ณผ ํ ๋น์ ๋ถ๋ฆฌํด ์ ์ธ๋ถ๋ฅผ ์์ ์ ์ต์์๋ก ๋์ด์ฌ๋ฆฌ๋ ๊ฒ์ ๋งํฉ๋๋ค.
console.log(num);
var num= 10;
ํธ์ด์คํ ์ ์ํด์ ์๋์ ์ฝ๋์ฒ๋ผ ๋์ํฉ๋๋ค.
var num = 10;
console.log(num);
ํด๋ก์
- ์๋ฐ์คํฌ๋ฆฝํธ ํด๋ก์ ๋ ํจ์๊ฐ ํด๋น ํจ์์ ์ค์ฝํ ์ธ๋ถ์ ์๋ ๋ณ์์ ์ ๊ทผํ ์ ์๋ ๋งค์ปค๋์ฆ ์ ๋๋ค.
- ์ด๋ฅผ ํตํด ํจ์ ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์๋ฅผ ์์ ํ๊ฑฐ๋ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์๋ ์์ ์์ count
๋ณ์๋ makeCounter
ํจ์ ๋ด์์ ์ ์๋์ง๋ง, ํด๋ก์ ๋ฅผ ํตํด counter
ํจ์์์๋ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฐ ๋ฉ์ปค๋์ฆ์ ์ด์ฉํ๋ฉด ๋ณ์๋ฅผ ์จ๊ธฐ๊ณ ํจ์๋ฅผ ํตํด ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋ ์ํ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
function makeCounter() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
const counter = makeCounter();
counter(); // 1
counter(); // 2
counter(); // 3