์ฑ <๋ฌ๋์๋ฐ์คํฌ๋ฆฝํธ>๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค.
๋ชฉ์ฐจ
- 1. ์ค์ฝํ
- 2. ์ค์ฝํ ์ฒด์ธ
- 3. ๋ณ์ ์จ๊ธฐ๋ ๋ฐฉ๋ฒ 3๊ฐ์ง
- 4. ํด๋ก์ ธ
<์ค์ฝํ>
1. ์ค์ฝํ : ๋ณ์์ ์ ํจ ๋ฒ์(์ด๋๊น์ง ์ฐธ์กฐ ๊ฐ๋ฅํ๊ฐ)
1-1) ์ค์ฝํ์ ์ข ๋ฅ
- ์ ์ญ ์ค์ฝํ : ์ฝ๋ ์ด๋์์๋ ์ฐธ์กฐ ๊ฐ๋ฅ(๋จ์ฉx, ์์กดx)
- ์ง์ญ ์ค์ฝํ : ํจ์ ์ฝ๋ ๋ธ๋ก์ด ๋ง๋ ์ค์ฝํ๋ก ํจ์ ์์ ๊ณผ ํ์ ํจ์์์๋ง ์ฐธ์กฐ ๊ฐ๋ฅ
- ํจ์ ์ค์ฝํ : ํจ์ ๋ด๋ถ์์ ์ ์ธํ ๋ณ์๋ ์ง์ญ ๋ณ์์ด๋ฉฐ ํจ์ ์ธ๋ถ์์ ์ ์ธํ ๋ณ์๋ ๋ชจ๋ ์ ์ญ ๋ณ์
- ๋ธ๋ก ์ค์ฝํ : ์ฝ๋ ๋ธ๋ก ๋ด๋ถ์์ ์ ์ธํ ๋ณ์๋ ์ง์ญ ๋ณ์. len๊ณผ const๋ก ์ ์ธ๋ ๋ณ์๋ ๊ทธ ๋ณ์๋ฅผ ๋๋ฌ์ผ ์๋ฌด ๋ธ๋ก์ ์ค์ฝํ์ ์ํจ.
1-2) ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ์ ํน์ง
- ํจ์ ๋จ์์ ์ ํจ๋ฒ์ : if๋ฌธ, for๋ฌธ ๋ฑ ๊ตฌ๋ฌธ๋ค์ด ์ฌ์ฉ๋์์ ๋, ์ค๊ดํธ ๋ฐ์ ๋ฒ์์์๋ ๊ทธ ์์ ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ณ์๋ช ์ค๋ณต ํ์ฉ : ๊ฐ์ ๋ณ์๋ช ์ด ์ฌ๋ฌ ๊ฐ ์๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฒ์์ ๋ณ์๋ฅผ ์ฐธ์กฐํจ.
- var ํค์๋์ ์๋ต : ๋ณ์๋ฅผ ์ ์ธํ ๋, ๋ณดํต int๋ char์ ๊ฐ์ ๋ณ์ ํ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ varํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ฅผ ์๋ตํ์ฌ๋ ์ค๋ฅ๊ฐ ๋์ง ์์.
- ๋ ์์ปฌ ํน์ฑ
2. ์ค์ฝํ ์ฒด์ธ
ํจ์๊ฐ ์ค์ฒฉํจ์์ผ ๋ ์์ํจ์์ ์ ํจ๋ฒ์๊น์ง ํก์ํ๋ ๊ฒ.
์ฆ, ํ์ํจ์๊ฐ ์คํ๋๋ ๋์ ์ฐธ์กฐํ๋ ์์ ํจ์์ ๋ณ์ ๋๋ ํจ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ.
innerFunction ์คํ๋ฌธ๋งฅ์ ์ ํจ๋ฒ์ ์ฒด์ธ ๋ฆฌ์คํธ๋ 1๋ฒ์ง์ ์์ ํจ์์ธ outerFunction์ ๋ณ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.
๋ง์ฝ innerFunction๋ด๋ถ์ ์๋ก์ด ๋ด๋ถ ํจ์๊ฐ ์๊ธฐ๊ฒ ๋๋ฉด ๊ทธ ๋ด๋ถํจ์์ ์ ํจ๋ฒ์ ์ฒด์ธ ๋ฆฌ์คํธ์
1๋ฒ์ง๋ outerFunction์ ๋ณ์ ๊ฐ์ฒด๋ฅผ, 2๋ฒ์ง๋ innerFunction์ ๋ณ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.
3. ๋ณ์ ์จ๊ธฐ๊ธฐ
3-1) var์ ์ธ์ ์ด์ฉ
function f1(a){ #์ธ๋ถ ๋ธ๋ก
function f2(a){ #๋ด๋ถ ๋ธ๋ก
return a-1;
}
var b; #b๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ์จ๊น. var์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ ์ญ์ผ๋ก ์ ์ธ๋จ.
b = a+f2(a);
console.log(b);
}
f1(2); //3
3-2) ๊ฐ์ ์ด๋ฆ์ ์ ์ธํ๋ ๋ฐฉ๋ฒ
{
let x = 'blue';
console.log(x); //blue
{
let x = 'red'; #์ธ๋ถ ๋ธ๋ก์ x์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํจ.
console.log(x); //red
}
console.log(x); //blue
}
3-3) ๋ชจ๋ ํจํด์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ : ๋ชจ๋ํํ์ฌ ๋ณ์์ ์ ๊ทผ๊ฐ๋ฅํ ํจ์๋ง์ ์ ๊ณต, ์ง์ ์ ์ผ๋ก ๋ณ์์๋ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํจ.
functio examModule() {
var something = "cool";
var another = [1, 2, 3];
function f2(a){
console.log(something);
}
function f2(a){
console.log(another);
}
return {
doSomething: doSomething,
doAnother: doAnother
};
}
4. ํด๋ก์ : ๊ฐ๋จํ ๋งํด, ํจ์ ๋ด๋ถ์ ์์ฑ๋ ํจ์์ด๋ค. ๋ด๋ถํจ์์์ ์ฐธ์กฐํ๋ ์ธ๋ถํจ์๋ ๋ซํ์ง ๋ชปํ๊ณ ๋ด๋ถํจ์์ ์ํด์ ๋ซํ๊ฒ ๋๋ค.
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
#myFunc๋ณ์์ displayName์ ๋ฆฌํดํจ
#์ ํจ๋ฒ์์ ์ดํ์ ํ๊ฒฝ์ ์ ์ง
myFunc();
#๋ฆฌํด๋ displayName ํจ์๋ฅผ ์คํ(name ๋ณ์์ ์ ๊ทผ)
4-1) ํด๋ก์ ์ ์ฅ์
- ์ค์ฝํ ์์์ ํจ์๋ฅผ ์ ์ํ๋ฉด ํด๋น ์ค์ฝํ๋ฅผ ๋ ์ค๋ ์ ์งํ ์ ์๋ค.
- ์ ๊ทผํ ์ ์๋ ๊ฒ์ ์ ๊ทผํ ์ ์๋ค.
let f;
{
let o = { note: 'Safe' }
f = function() {
return o;
}
}
let oRef = f();
oRef.note = "Not so safe after all!"
[์ฐธ๊ณ ์ฌ์ดํธ]
์ค์ฝํ ์ฒด์ธ - http://www.nextree.co.kr/p7363/
'๐ฐ ์ธ์ด > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ฒด ์งํฅ ์ธ์ด - ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด(JS) (0) | 2020.01.04 |
---|---|
๋ฐฐ์ด๊ณผ ๋ฐฐ์ด์ฒ๋ฆฌ (0) | 2020.01.03 |
์ค์ฝํ(2) (0) | 2019.12.22 |
๋ฐ์ดํฐ ํ์ & ํจ์ (0) | 2019.12.17 |
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ๋๊ตฌ - git, npm, gulp (0) | 2019.12.16 |