* Function
- ๊ธฐ๋ณธ์ ์ธ ๋น๋ฉ๋ธ๋ญ
- subprogram์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ฌ๋ฌ๋ฒ ์ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ํ๊ฐ์ง์ task(์์
)๋ ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด ์ฐ์ธ๋ค.
1. Function declaration (ํจ์ ์ ์ธ)
- function ํค์๋ ์ด์ฉ, ์ด๋ฆ(name)์ง์ , ( )์ parameter(์ธ์) ๋์ด, { } body ๋ก์ง ์์ฑ, returnํด์ฃผ๋ฉด ๋๋ค.
- ํ๋์ ํจ์๋ ํ ๊ฐ์ง์ ์ผ๋ง ํ๋ค.
- ํจ์์ด๋ฆ ์์ฑ์, ๋์ฌํํ๋ก ์ด๋ฆ์ ์ง์ ํด์ผํ๋ค.
ex)
createCardAndPoint ๋ผ๋ ํจ์ ์ด๋ฆ์ด ์๋ค๊ณ ๋ณด์.
์ฐ๋ฆฐ ์ด๊ฒ์ creteCard ํน์ createPoint๋ก ๋๋ ์ผ ํ ์ง ๋ง์ง์ ๋ํด ๊ณ ๋ฏผํด์ผํ๋ค.
- ํจ์๋ object์ด๋ค.
ex)
function printHello() {
console.log('Hello');
} --->ํจ์ ์ง์
printHello(); --->ํจ์ ํธ์ถ
- logํจ์ ํธ์ถํ๋ฉด ์ํ๋ ๋ฉ์ธ์ง ์ถ๋ ฅ ๊ฐ๋ฅ.
ex)
log('Hello@');
- JS์์๋ type์ด ์์ด์ ์ซ์์ธ์ง string์ ์ ๋ฌํด์ผํ๋์ง ๋ช
ํX. (๋ง๋ ์ฌ๋์ด ๋์ถฉ๋ง๋ค์ด์)
๊ทธ๋์ ์ฌ์ฉํ๋ ์ฌ๋์ด ์ซ์๋ก ์ ๋ฌํ ์ ์์.
ex)
log(1234);
- ์ซ์๊ฐ ๋ฌธ์์ด๋ก ๋ณํ๋ผ์ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๊ธฐ๋๋ฌธ์ ์๊ด์์ง๋ง ๋ค๋ฅธ ํจ์์์ ํ์
์ด ์ค์ํ ๊ฒฝ์ฐ JS๋ ๋ํดํ ์ ์๋ค.
* TS(TypeScript) : ๊ท๋ชจ ์๋ ํ๋ก์ ํธ, ์์ฑํ ๊ฒ์ library ํํ๋ก api๋ก ์ ๊ณตํ ๋ TS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค. (ํจ์์ interface๋ง ๋ด๋ ๋ฌด์์ ์๋ฏธํ๋์ง ํ์คํ๊ฒ ํ์ธํ๊ณ ์ธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. JavaScript์์๋ ๋ช ์X) : parameter์ด๋ type์ ๋ช ์ํ๋๋ก ๋ผ์๋ค. |
2. Parameter (๋งค๊ฐ๋ณ์)
// 2. Parameters
// premitive parameters: passed by value
// object parameters: passed by reference
function changeName(obj) {
obj.name = 'coder';
}
const ellie = { name: 'ellie'};
changeName(ellie);
console.log(ellie);
- premitive: ๋ฉ๋ชจ๋ฆฌ์ value๊ฐ ์ ์ฅ
- object: ๋ฉ๋ชจ๋ฆฌ์ referece๊ฐ ์ ์ฅ
- changeName()์ ์ ๋ฌ๋ obj์ ์ด๋ฆ์ coder๋ก ๋ณ๊ฒฝํ๋ ํจ์.
ellie๋ผ๋ const ์ ์ ํ ellie๋ผ๋ obj๋ฅผ ๋ง๋ค์ด ํ ๋นํ๋ฉด
๋ฉ๋ชจ๋ฆฌ์๋ obj๊ฐ ๋ง๋ค์ด์ง ref๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๊ฐ. ์ด ref๋๋ ์ด obj๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค
obj๋ ref๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ํจ์ ์์์ obj์ ๊ฐ์ ๋ณ๊ฒฝํ๊ฒ๋๋ฉด
๊ทธ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ๊ทธ๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฉ ๋๊ธฐ์ ์ถํ์ ๋ณ๊ฒฝ๋ ์ฌํญ๋ค์ด ํ์ธ ๊ฐ๋ฅํ๋ค.
3.Default parameters
- function์ ์คํํ์ ๋ parameter๊ฐ์ ์ค์๋ก ์๋ฃ๊ฑฐ๋ ํ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด parameter์ ๊ธฐ๋ณธ๊ฐ(default๊ฐ)์ ์ค์ ํ ์ ์๋ค.
- default parameter ์ ์ธ์ ๋ฑํธ(=)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ๊ทธ๋ฌ๋ฉด function ์คํ์ parameter๊ฐ ์ ์๋์ง ์์์ ๋ default parameter๊ฐ ๋ฐ๋๋๋ค.
- default parameter๋ ๋จ์ํ ๊ฐ ๋ฟ๋ง ์๋๋ผ ์ฐ์ฐ์, ํจ์ ๋ฑ์ ์ด์ฉํด ๋ค์ํ๊ฒ ์ค์ ํ ์ ์๋ค.
: showMessage์ ๋ ๊ฐ์ง parameters (message, from)์ด ์๋ค. ๊ทธ๋์ ์ด message๊ฐ ๋๊ตฌ๋ก๋ถํฐ ์๋์ง(from) ์ถ๋ ฅ.
: (๋งจ ์๋) showMessage ํธ์ถํ ๋ ('Hi!')๋ผ๋ ๋ฉ์ธ์ง๋ง ์ ๋ฌ๋๋ ๊ฒ ํ์ธํ ์ ์๋ค. ๋ฉ์์ง๋ ์ถ๋ ฅ๋์ง๋ง from์ด ์ ์๋์ง ์์undefined๋ก ๋์จ๋ค.
===> Hi ๋ผ๋ ํ๋์ ์ธ์๋ง ์ ๋ฌ๋์๊ณ , 2๋ฒ์ฌ ์ธ์๋ from์ ๋ํด์ ๊ทธ ์ด๋ค ๊ฒ๋ ์ ๋ฌ๋์ง ์์๊ธฐ ๋๋ฌธ์
- parameter๊ฐ์ด ์ ์๋์ง ์์ ๊ฒฝ์ฐ,
if (from === undefined) {
from = 'unknown';
}
(๊ทธ ์ค ์ด๋ถ๋ถ)
- ์์ ์ from์ด undefined์ด๋ฉด unknown์ด๋ผ๋ ๊ธฐ๋ณธ์ ์ธ string์ ์ถ๊ฐํ์ ๋ผ๊ณ ํด์ unknown์ด๋ผ๊ณ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
- ํ์ง๋ง ์ง๊ธ์ ์ด๋ ๊ฒ ์ ์ง ์์๋
function showMessage(message, from = 'unknown') {
console.log(`${message} by ${from}`);
}
์ด๋ผ๊ณ ์ง์ ํ๋ฉด ์ฌ์ฉ์๊ฐ parameter๋ฅผ ์ ๋ฌํ์ง ์์๋ ์ด ๊ฐ(unknown)์ด ๋์ฒด๋์ด ์ฌ์ฉ๋๋ค.
4. Rest parameters (added in ES6)
: ๋ง ๊ทธ๋๋ก rest(์ฌ๋ถ, ๋๋จธ์ง) parameter๋ผ๋ ์๋ฏธ.
: . . .์ ์ฌ์ฉํ๋ค.
:๋ฐฐ์ด ํํ๋ก ์ ๋ฌ
// 4. rest parameters (added in ES6)
function printAll(...args) {
for (let i = 0; i < args.length;) i++) {
console.log(args [i]);
}
}
printAll('dream', 'coding', 'ellie');
- printAll์ด๋ผ๋ ํจ์๋ฅผ ํธ์ถํ ๋ 3๊ฐ์ ์ธ์(dream, coding, ellie)๋ฅผ ์ ๋ฌํ๋ค.
- . . . args = 3๊ฐ์ ๊ฐ์ด ๋ด๊ฒจ์ ธ์๋ ๋ฐฐ์ด.
- for๋ฌธ ์ด์ฉํด์ "์ฒ์๋ถํฐ arg์ ๊ฐฏ์๋งํผ ๋๋ฉด์
1๋ฒ์งธ ์ธ์(dream), ๊ทธ ๋ค์์๋
2๋ฒ์งธ ์ธ์(coding), ๊ทธ ๋ค์์
3๋ฒ์งธ ์ธ์(ellie) ๋ฅผ ์ถ๋ ฅํ๋ค.
===> for๋ฌธ์ ํตํด ๋ชจ๋ ์์๋ฅผ ์ถ๋ ฅํด๋ ๋๊ณ ๊ทธ ์ธ ๋ค๋ฅธ ํํ๋ก๋ ์ถ๋ ฅ ๊ฐ๋ฅํ๋ค.
-<๋ฐฐ์ด ์ถ๋ ฅํ๋ ๋ฒ>
: for์ด์ฉํด๋ ๋์ง๋ง for .. of๋ผ๋ ๋ฌธ๋ฒ์ผ๋ก ๋ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค.
for (const arg of args) {
console.log(arg);
}
- args์ ์๋ ๊ฒ ํ๋์ฉ ์ง์ ๋๋ฉด์ log(arg)๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ ๊ฒ.
- ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก๋ forEach๋ผ๋ ํจ์ํ ์ธ์ด๋ฅผ ์ด์ฉํด ์ถ๋ ฅ๊ฐ๋ฅํ๋ค. ๋ ์์ธํ ๊ฑด ๋ฐฐ์ด๊ณต๋ถํ๊ธฐ
args.forEach((arg) => console.log(arg));
5. Local Scope (์ง์ญ๋ณ์)
- ์๋ฆฌ: ๋ฐ์์๋ ์์ด ๋ณด์ด์ง ์๊ณ ์์์๋ง ๋ฐ์ ๋ณผ ์ ์๋ค.
// 5. Local scope
let globalMessage = 'global'; // global variable
function printMessage() {
let message = 'hello';
console.log(message); // local variable
console.log(globalMessage);
}
printMessage();
scope์๋ 2๊ฐ์ง๊ฐ ์๋ค.
1. Global scope
2. Local scope
: ๋ธ๋ญ{ } ์์์ ๋ณ์ ์ ์ธํ๋ ๊ฒ = local varialbe (์ง์ญ๋ณ์)
: ๋ธ๋ญ { }์์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
: { }๋ธ๋ญ ๋ฐ์์ ๋ฐ์์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ฉด ์๋ฌ๋ฐ์.
ex)
- console.log(message); ์ถ๋ ฅ์ ์ฐ์ธก ์ฝ์์์ ์๋ฌ ๋ฐ์.
- printMessage() ๋ผ๋ ํจ์ ์์ printAnother() ์ด๋ผ๋ ํจ์๊ฐ ๋ ์๋ค.
- ์์์ ๋ถ๋ชจ์๊ฒ์ ์ ์๋ ๋ฉ์์ง ํ์ธํ ์ ์๋ค.
- ํ์ง๋ง ์์ ์์ ์ ์๋ childMessage๋ฅผ ๋ถ๋ชจ์๊ฒ์ ๋ณด๋ ค๊ณ ํ๋ค๋ฉด ์๋ฌ๊ฐ ๋ ๊ฒ.
: ์์์ ํจ์๊ฐ ๋ถ๋ชจํจ์์ ์ ์๋ ๋ณ์๋ค๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
6. Return a value
: return: ์ด๋ค ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ๋์ return์ ์ฐ๋ฉด ๊ทธ์๋ฆฌ์ return์ ํ ๋นํ ๊ฐ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๊ณ ํด๋น ํจ์๋ฅผ ์ข ๋ฃํ๋ค.
// 6. Return a value
function sum(a, b) {
return a + b;
}
const result = sum(1, 2); //3
console.log(`sum: ${sum(1, 2)}`);
: sum์ด๋ผ๋ ํจ์ ํธ์ถ ์ 1๊ณผ 2๋ฅผ ํฉํ ๊ฐ์ธ 3์ด return๋จ
- returnํ์ ์ด ์๋ ํจ์๋ค์ return undefined์ด ๋ค์ด์๋ ๊ฒ๊ณผ ๋๊ฐ๋ค.
7. Early return, early exit
// 7. Early return, early exit
// bad
function upgradeUser(user) {
if (user.point > 10) {
//long upgrade logic...
}
}
- upgradeUserํจ์ ์์์ user.point๊ฐ 10์ด์์ผ ๋ ์งํํ๋ ๋ก์ง์ด ์๋ค๊ณ ํ๋ค๋ฉด if ๋ธ๋ญ { }์์์ ๋ก์ง ์์ฑ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค. ์ด๋ด ๊ฒฝ์ฐ if์ else๋ฅผ ๋ฒ๊ฐ์์ ์ฐ๋ ๊ฒ ๋ณด๋ค๋
//good
function upgreadeUser(user) {
if (user.point <= 10) {
return;
}
// long upgrade logic...
}
- ์กฐ๊ฑด์ด ๋ง์ง ์์ ๋ ๋นจ๋ฆฌ returnํด์ ํจ์๋ฅผ ์ข ๋ฃํ๊ณ ์กฐ๊ฑด ๋ง์๋๋ง ๊ทธ ๋ค์์ ํ์ํ logic์ ์์ฑํ๋ ๊ฒ ์ข๋ค.
- ์กฐ๊ฑด์ด ๋ง์ง ์์ ๊ฒฝ์ฐ / ๊ฐ์ด undefined์ธ ๊ฒฝ์ฐ / ๊ฐ์ด -1์ธ ๊ฒฝ์ฐ ๋นจ๋ฆฌ returnํ๊ธฐ.
Function Expression (ํจ์ ํํ)
// First-class function
// functions are treated like any other variable
// can be assigned as a value to variable
// can be passed as an argument to other functions.
// can be returned by another function
<๋ณต์ต>
- first-class function์ ๋ค๋ฅธ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก
๋ณ์์ ํ ๋น์ด ๋๊ณ
function์ parameter๋ก ์ ๋ฌ
return๊ฐ์ผ๋ก๋ return๋๋ค.
1. Function expression (ํจ์ํํ)
// 1. Function expression
// a function declaration can be called earlier than it is defined. (hoisted)
// a function expression is created when the execution reaches it.
const print = function () {
console.log('print');
};
print();
const printAgain = print;
printAgain();
const sumAgain = sum;
console.log(sumAgain(1, 3));
- function() ์ ์ด๋ฆ์ด ์๊ณ , function์ ์ด์ฉํด parameter์ { }๋ธ๋ญ ์ด์ฉํ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํจ์์ ์ด๋ฆ์ด ์๋ ๊ฒ์ anonymous function์ด๋ผ๊ณ ํ๋ค.
- ํจ์์ ์ด๋ฆ ์์ด ํ์ํ ๋ถ๋ถ( console.log('print'); )๋ง ์์ฑํด์ ํ ๋นํ ์ ์๊ณ
ํจ์ ์ด๋ฆ์ ์์ฑํ ์๋ ์๋ค. = named function
ex)
const print = function print() { }
- ํจ์๋ฅผ print์ ํ ๋นํ๋ฉด print๋ผ๋ ๋ณ์์ ํจ์๋ฅผ ํธ์ถํ๋ฏ (); ๋ก ํธ์ถํ๋ฉด ๋ฐ๋ก ํ๋ฆฐํธ ์ถ๋ ฅ๋จ.
-๋ค์ ๋ค๋ฅธ ๋ณ์ (const printAgain)์ ํ ๋นํ๊ฒ ๋๋ฉด
printAgain์ function์ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฏ๋ก
printAgain(); ์ ๊ฐ์ print๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ์ ์ ์๋ค.
- (์๊น ์์์ sum์ด๋ผ๋ ํจ์ ๋ง๋ค์์)
์ด๊ฒ๋ sumAgain์ด๋ผ๋ ๋ณ์๋ฅผ ํ ๋นํ๊ฒ ๋๋ฉด ๋์ผํ๊ฒ ํธ์ถํ ์ ์๋ค.
๐Function declaration ๊ณผ Function expression ์ฐจ์ด์
- function expression
: ํ ๋น๋ ๋ค์ ๋ถํฐ ํธ์ถ ๊ฐ๋ฅ
- Function declaration
: hoisting๋๋ค. (function์ด ์ ์ธ๋๊ธฐ ์ด์ ์ ํธ์ถํด๋ ๋ค์์ sum์ด๋ผ๋ ํจ์๋ฅผ ์ ์ํ๊ธฐ ์ ์ JS์์ง์ด ์ ์ธ๋ ๊ฒ์ ์ ์ผ ์๋ก ์ฌ๋ ค์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
2. Callback function using function expreession
* Callback(์ฝ๋ฐฑ): ์ ๋ค๋ฅธ ์ฝ๋์ ์ธ์๋ก์ ๋๊ฒจ์ฃผ๋ ์คํ ๊ฐ๋ฅํ ์ฝ๋(ํจ์๋ก ์๊ฐํ๋ฉด ์ฝ๋ค!)๋ฅผ ์๋ฏธํ๋ค.
์ฆ, ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ์ฝ๋๋ฅผ Callback์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค!
๐callback function์ด๋ ๋ฌด์์ผ๊น?
: ๋ค๋ฅธ ์ฝ๋(ํจ์)์ ์ธ์๋ก์ ๋๊ฒจ์ฃผ๋ ํจ์๋ฅผ ์๋ฏธ!
- ์ฌ์ฉํ๋ ์ด์ : ํ๋ก๊ทธ๋จ์ด ๋น์์ฐจ์ ์ผ๋ก ์คํ๋์ ๋ ์ฌ์ฉ
// 2. Callback function using function expreession
function randomQuiz(answer, printYes, printNo) {
if (answer === 'love you') {
printYes();
} else {
printNo();
}
}
- answer : ์ ๋ต
- printYes : ์ ๋ต์ผ ๋
- printNo : ์ ๋ต์ด ์๋ ๋
์ํฉ์ ๋ง์ ๋ ์ ๋ฌ๋ ํจ์(printYes, printNo) ๋ฅผ ๋ถ๋ฅด๋ ๊ฒ = callback function
์ฆ, ๋ ๊ฐ์ง์ callback functions๊ฐ parameter๋ก ์ ๋ฌ๋ผ์ answer์ด love you์ธ ๊ฒฝ์ฐ์๋ง
printYes๋ผ๋ ์ฝ๋ฐฑํจ์๋ฅผ ํธ์ถ, ์๋๊ฒฝ์ฐ printNo๋ผ๋ ์ฝ๋ฐฑํจ์ ํธ์ถํจ.
const printYes = function() {
console.log('yes!');
};
const printNo = functino print() {
console.log('no!');
};
randomQuiz('wrong', printYes, printNo);
randomQuiz('love you', printYes, printNo);
- printYes๋ผ๋ ๋ณ์์ yes๋ฅผ ์ถ๋ ฅํ๋ ํจ์(function())๋ฅผ ํ ๋นํ๊ณ
printNo๋ผ๋ ๋ณ์์๋ no๋ฅผ ์ถ๋ ฅํ๋ ํจ์((function print())๊ฐ ์จ๋ค.
- randomQuizํธ์ถํ ๋ ์ฐจ๋ก๋๋ก ์ ๋ต, yes์ฝ๋ฐฑํจ์, no์ฝ๋ฐฑํจ์ ์ถ๋ ฅ.
- ์ด๋ฆ ์๋ ํจ์ = anonymous function
// anonymous function
const printYes = function() {
console.log('yes!');
};
- named function
// named function
// better debuffing in debugger's stack traces
// recursions
const printNo = function print() {
console.log('no!');
};
: ํจ์์ ์ด๋ฆ: print
๐์ด๋ฆ ์ฐ๋ ์ด์
: ๋๋ฒ๊น ํ ๋ ์ฐ์
: ํจ์ ์์์ ๋ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ ๋ ์ฐ์( =recursions),
: ๋ฐ๋ณต๋๋ ํ๊ท ๊ฐ ๊ณ์ฐ ๋ฑ ์ฐ์์๊ฐ ๋ค์ํ๋ค.
===>์์๋ง๋๊ธฐ
-ํจ์๋ฅผ ๋ฌดํ๋๋ก ํธ์ถํ๋ฉด call stack์ด ๊ฝ ์ฐผ๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
===>์์๋ง๋๊ธฐ
Arrow Function
: ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด์ค๋ค.
: ํญ์ ์ด๋ฆ์ด ์๋ anonymous function.
// Arrow function
// always anonymous
const simplePrint = function () {
console.log('simplePrint!');
};
- ๋ฌธ์ ์ : function () { } ๊ดํธ ์ค๊ดํธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์จ์ค์ผํ๋ค.
const simplePrint = () => console.log('simplePrint!');
- ์ ์์ ์ฝ๋๋ฅผ ์ด๋ ๊ฒ ์ค์ผ ์ ์์.
๋ ๋ค๋ฅธ ์์๋ฅผ ๋ณด์
// 1๋ฒ
const add = (a, b) => a + b;
//2๋ฒ
const add = function (a, b) {
return a + b;
}
1๋ฒ๊ณผ 2๋ฒ ์ค ์ด๋ค ๊ฒ์ด ๋ ๊ฐ๊ฒฐํด ๋ณด์ด๋๊ฐ?
1๋ฒ์ด๋ค.
๋ณต์กํ ์ฝ๋๋ฅผ ๋ง๋ค ๋ ๋ธ๋ญ์ด ํ์ํ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ๋ธ๋ญ์ ๋ฃ์ ์๊ฐ ์๋ค.
const simpleMultiply = (a, b) => {
// do something more
return a * b;
}
- ๋ธ๋ญ ์ฐ๋ฉด returnํค์๋ ์จ์ return ํด์ผํ๋ค.
IIFE
: ํจ์ ์ ์ธํ๋ฉด ๋์ค์ ํธ์ถ์ ํด์ค์ผํ๋ค. ์ ์ธ๊ณผ ๋์์ ํธ์ถํ ์ ์๋ ๋ฐฉ๋ฒ.
: ์ต๊ทผ์๋ ์ ์ฐ์ด์ง๋ ์์.
// IIFE: Immediately Invoked Function Expression
function hello(){
console.log('IIFE');
}
'๐Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] DOM์ด๋? #2 ๋ถ๋ชจ, ์์, ํ์ Node (0) | 2023.03.26 |
---|---|
[JS] DOM์ด๋? #1 Node์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ (0) | 2023.03.26 |
[JS] operator(์ฐ์ฐ์), if, switch, for loops ์ฝ๋ (0) | 2023.03.13 |
[JS] ๋ฐ์ดํฐํ์ , data types, ๋ณ์ ์ ์ธ let vs var, hoisting (1) | 2023.03.12 |
[JS] ์ฝ์์ ์ถ๋ ฅ, script async ์ defer์ ์ฐจ์ด์ (0) | 2023.03.12 |