ํจ์ ์ ์ธ๋ฌธ
function ์ ์๋ถ๋ง ์กด์ฌํ๊ณ ๋ณ๋์ ํ ๋น ๋ช
๋ น์ด ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฐ๋์ ํจ์๋ช
์ด ์ ์๋ผ ์์ด์ผ ํ๋ค. (๊ธฐ๋ช
ํจ์ ํํ์)
๊ธฐ๋ช ํจ์ ํํ์์ ์ฃผ์ํ ์ ์ด ํ๋ ์๋ค.
๋ฐ๋ก ์ธ๋ถ์์๋ ํจ์๋ช
์ผ๋ก ํธ์ถํ ์ ์๋ค๋ ์ ์ด๋ค.
ํจ์๋ช
์ ์ค์ง ํจ์ ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์๋ค.
ํจ์ ํํ์
์ ์ํ function์ ๋ณ๋์ ๋ณ์์ ํ ๋นํ๋ ๊ฒ
ํจ์๋ช
์ด ์ ์๋์ง ์์๋ ๋๋ค. (์ต๋ช
ํจ์ ํํ์)
์ผ๋ฐ์ ์ผ๋ก ํจ์ ํํ์์ ์ต๋ช ํจ์ ํํ์์ ๋งํ๋ค.
๐ํจ์๋ฅผ ์ ์ํ๋ ์ธ ๊ฐ์ง ๋ฐฉ์
function a () { } // ํจ์ ์ ์ธ๋ฌธ. ํจ์๋ช
a๊ฐ ๊ณง ๋ณ์๋ช
a(); // ์คํ
var b = function () { } // (์ต๋ช
) ํจ์ ํํ์. ๋ณ์๋ช
b๊ฐ ๊ณง ํจ์๋ช
b(); // ์คํ
var c = function d () { } // ๊ธฐ๋ช
ํจ์ ํํ์. ๋ณ์๋ช
์ c, ํจ์๋ช
์ d
c(); // ์คํ
d(); // ERROR
๐๐ป ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์(1) - ์๋ณธ ์ฝ๋
console.log(sum(1, 2));
console.log(multiply(3, 4));
function sum (a, b) { // ํจ์ ์ ์ธ๋ฌธ sum
return a + b;
}
var multiply = function (a, b) { // ํจ์ ํํ์ multiply
return a * b;
}
๐๐ป ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์(2) - ํธ์ด์คํ ์ ๋ง์น ์ํ
var sum = function sum (a, b) { // ํจ์ ์ ์ธ๋ฌธ์ ์ ์ฒด๋ฅผ ํธ์ด์คํ
ํฉ๋๋ค.
return a + b;
};
var multiply; // ๋ณ์๋ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ฆฝ๋๋ค.
console.log(sum(1, 2));
console.log(multiply(3, 4));
multiply = function (a, b) { // ๋ณ์์ ํ ๋น๋ถ๋ ์๋ ์๋ฆฌ์ ๋จ๊ฒจ๋ก๋๋ค.
return a * b;
};
ํจ์ ์ ์ธ๋ฌธ์ ์ ์ฒด๋ฅผ ํธ์ด์คํ
ํ ๋ฐ๋ฉด ํจ์ ํํ์์ ๋ณ์ ์ ์ธ๋ถ๋ง ํธ์ด์คํ
ํ๋ค.
ํจ์๋ ํ๋์ ๊ฐ์ผ๋ก ์ทจ๊ธํ ์ ์๋ค๋ ๊ฒ์ด ๋ฐ๋ก ์ด๋ฐ ๊ฒ์ด๋ค. ํจ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ผ๋ก์จ 'ํ ๋น'ํ ๊ฒ์ด ๊ณง ํจ์ ํํ์์ด๋ค.
๐ฅ ํจ์ ์ ์ธ๋ฌธ์ ์ํ์ฑ
์ค๋ฌด์์ ๋ฐ์ํ ์ ์๋ ํ์ค์ ์ธ ์๊ฐ ์๋ค.
๊ฐ๋ฐ์ A๊ฐ sum ํจ์ ์ ์ธ์ ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋๋ ์๋ก ์
์ฌํ B๊ฐ ๊ฐ์ ํ์ผ์ 5000๋ฒ์งธ ์ค์์ sum ํจ์๋ฅผ ์๋ก ์ ์ธํ๋ค.
๋์ผํ ๋ณ์๋ช
์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ํ ๋นํ ๊ฒฝ์ฐ ๋์ค์ ํ ๋นํ ๊ฐ์ด ๋จผ์ ํ ๋นํ ๊ฐ์ ๋ฎ์ด์์ด๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ฅผ ์คํํ๋ ์ค์ ์ค์ ๋ก ํธ์ถ๋๋ ํจ์๋ ์ค์ง ๋ง์ง๋ง์ ํ ๋นํ ํจ์, ์ฆ ๋งจ ๋ง์ง๋ง์ ์ ์ธํ ํจ์๋ฟ์ด๋ค.
์ด ๋, A์ B ๋ชจ๋ sum ํจ์๋ฅผ ํจ์ ํํ์์ผ๋ก ์ ์ํ๋ค๋ฉด 5000๋ฒ์งธ ์ค ์ด์ ๊น์ง๋ A์ ์๋๋๋ก, 5000๋ฒ์งธ ์ค ์ดํ๋ถํฐ๋ B์ ์๋๋๋ก ์ ๋์ํ์ ๊ฒ์ด๋ค.
function sum (x, y) { // ๐ฉ
return x + y;
}
var sum = function (x, y) { // ๐๐ป
return x * y;
}
์ํํ ํ์ ์ ์ํด์๋ ์ ์ญ๊ณต๊ฐ์ ํจ์๋ฅผ ์ ์ธํ๊ฑฐ๋ ๋๋ช ์ ํจ์๋ฅผ ์ค๋ณต ์ ์ธํ๋ ๊ฒฝ์ฐ๋ ์์ด์ผ ํ๋ค.
'JavaScript > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
immutable.js, baobab.js (0) | 2021.11.17 |
---|---|
arrow function์์ { }(์ค๊ดํธ)๊ฐ ์๊ณ ์๊ณ ์ ์ฐจ์ด (0) | 2021.11.16 |
[JavaScript] undefined, null, undeclared (0) | 2021.11.05 |
[JavaScript] scope, scope chain (0) | 2021.10.29 |
[JavaScript] ์ ์ญ ๋ณ์, ์ง์ญ ๋ณ์ (0) | 2021.10.29 |
๋๊ธ