- ํจ์ ์์ฑ ์ฐ์ต์ ์ํ ํด๋์ ๋๋ค.
- ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- ์์
- javascript-info ๋ฐ๋ก๊ฐ๊ธฐ
- n๋จ ์ถ๋ ฅํ๊ธฐ ๋ฐ๋ก๊ฐ๊ธฐ
์ฐธ๊ณ : ๊ตฌ๊ตฌ๋จ ์์ ๋ณํ ๋ฐ๋ก๊ฐ๊ธฐ - ๋์ด๋ณ ์ฃผ๋ฅ ํ์ฉ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
[ํจ์]
- ์ ์ธ
- ํํ์
function ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์) {
// ํจ์ ๋ณธ๋ฌธ. return ๊ฐ์ด ์์ผ๋ฉด undefined ๋ฐํ
// ์๋ฌ ์ง์ ๋ฐ์์ํฌ ๊ฒฝ์ฐ
if (์กฐ๊ฑด1 || ์กฐ๊ฑด2) { // Truthyํ ๊ฒฝ์ฐ ์คํ
throw new Error(
'์๋ฌ ๋ฌธ๊ตฌ ์
๋ ฅ'
);
}
return ...;
}
// ํจ์๋ฅผ ๋ณ์์ ํ ๋น ํ ์ถ๋ ฅ ๋๋ ๋ฐ๋ก ์ถ๋ ฅ ํตํด ๊ฒฐ๊ณผ๊ฐ ํ์ธ
let ๋ณ์ = ํจ์์ด๋ฆ1(์ธ์); // ํจ์์ ์ ๋ฌ
console.log(๋ณ์);let ๋ณ์1 = function() {
// ํจ์ ๋ณธ๋ฌธ
}
๋ณ์1; // ํจ์ ๋ณธ๋ฌธ(์์ค ์ฝ๋)์ ๋ฌธ์ํ์ผ๋ก ๋ฐ๊พธ์ด ์ถ๋ ฅ
const ๋ณ์2 = ํจ์์ด๋ฆ1; // ํจ์๋ฅผ ๋ณต์ฌํด ๋ค๋ฅธ ๋ณ์์ ํ ๋น
๋ณ์2(); // ํจ์๊ฐ ๋ฐํ- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ ํจ์๋ฅผ ํน๋ณํ ์ข ๋ฅ์ ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ค.
| Category | function declaration | function expression |
|---|---|---|
| ์์ฑ์ | ๋ ๋ฆฝ๋ ๊ตฌ๋ฌธ ํํ | ํํ์์ ์ผ๋ถ |
| ํธ์ถ | ์ค์ ์คํ ํ๋ฆ์ด ํด๋น ํจ์์ ๋๋ฌํ์๋ | ์ ์๋๊ธฐ ์ ๋ ๊ฐ๋ฅ -> but. Bad Case |
| lexical environment | ํจ์ ๋ณธ๋ฌธ ์ ์ฒด -> Binding Object. ์ธ์ ๋ ์ง | ์ ์ธ๋ ๋ณ์๋ง -> TDZ(์์ ์ฌ๊ฐ์ง์ญ). ํ ๋น ์ ๋ถ๊ฐ |
| ์์ | var: undefined ๋ฐํ -> ํจ์ ํธ์ถ X | let, const: ์ฐธ์กฐ ์ค๋ฅ |
| ์ค์ฝํ | ์ฝ๋ ๋ธ๋ก ๋ด ๊ฐ๋ฅ. ๋ฐ ๋ถ๊ฐ๋ฅ | ๋ธ๋ก ๋ด์ธ ๋ชจ๋ ๊ฐ๋ฅ |
- ์คํฌ๋ฆฝํธ ์คํ ์ , Global context ํ๊ฒฝ์์ ์ ์ญ์ ์ ์ธ๋ ํจ์ ์ ์ธ๋ฌธ์ ์ฐพ๊ณ , ํด๋น ํจ์๋ฅผ ์์ฑํ๋ค.
- ๋ฐ๋ผ์, ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๊ธฐ ์ '์ด๊ธฐํ ๋จ๊ณ'์์ ํจ์ ์ ์ธ ๋ฐฉ์์ผ๋ก ์ ์ํ ํจ์๊ฐ ์์ฑ๋๋ค.
function warning(notification, permit, prohibit){
if (confirm(notification)) permit()
else prohibit();
}
warning(
"์ด๊ณณ์ ์ํํ ์ ์์ต๋๋ค. ๋ค์ด๊ฐ์๊ฒ ์ต๋๊น?",
function() { console.log("์
์ฅ์ ํ๋ฝํฉ๋๋ค."); },
function() { console.log("์
์ฅ์ ๋ถํํฉ๋๋ค."); }
);- ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌํ๊ณ "๋์ค์ ํธ์ถ(back)"
- ์์ ๊ฐ์ด ์ด๋ฆ ์์ด ์ ์ธํ ํจ์๋ฅผ "์ต๋ช ํจ์(anonymous function)"์ด๋ผ ํ๋ค.
- ํจ์๋ก์์ ๊ธฐ๋ฅ๋ง ์ํํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ผ๋ก ํจ์ฌ ๊ฐ๋ณ๋ค.
-
arguments ํ์ดํ ํจ์ ->
...args -
constructor, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ฑ์๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค. -
this๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ด ๋ค๋ฅด๋ค. - ๋ถ๋ชจ์ this๊ฐ ๊ฐ๋ฆฌํค๋ window ์ถ๋ ฅ