Skip to content

Commit

Permalink
Merge pull request #1009 from nincoding/nincoding
Browse files Browse the repository at this point in the history
24-2์žฅ ํด๋กœ์ € - ํ•œ์ˆ˜์ง€
  • Loading branch information
Ryan-Dia authored Dec 19, 2023
2 parents 922e81c + 24776f8 commit f939aca
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions docs/24_ํด๋กœ์ €/ํ•œ์ˆ˜์ง€.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,93 @@ innerFunc();

1. ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.
2. ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ์— ํ•œ์ •๋œ๋‹ค.

---

### ๐Ÿ“Œ 24-4. ํด๋กœ์ €์˜ ํ™œ์šฉ

> ํด๋กœ์ €๋Š” **์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ**ํ•œ๋‹ค. (= ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ )
๊ตฌ์ฒด์ ์œผ๋กœ๋Š”, `์ƒํƒœ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ ` ์ƒํƒœ๋ฅผ `์•ˆ์ „ํ•˜๊ฒŒ ์€๋‹‰ํ•˜๊ณ  ํŠน์ • ํ•จ์ˆ˜์—๊ฒŒ๋งŒ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•จ`์ด๋‹ค.

**ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ **

1. ์ƒํƒœ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
2. ์•ˆ์ „ํ•˜๊ฒŒ ์€๋‹‰ํ•œ๋‹ค.
3. ํŠน์ • ํ•จ์ˆ˜์—๊ฒŒ๋งŒ ์ƒํƒœ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ์ง€ํ•œ๋‹ค.

---

### ๐Ÿ“Œ 24-5. ์บก์Šํ™”์™€ ์ •๋ณด ์€๋‹‰

- **์บก์Šํ™”**: **๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํผํ‹ฐ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์ธ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ**์„ ๋งํ•œ๋‹ค.

- **์ •๋ณด์€๋‹‰**: ์บก์Šํ™”๋Š” ๊ฐ์ฒด์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ์ถœ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ •๋ณด ์€๋‹‰์ด๋ผ๊ณ  ํ•œ๋‹ค.

**์ •๋ณด์€๋‹‰์˜ ์ด์ **

`์ •๋ณด์€๋‹‰`์€ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•  ํ•„์š”๊ฐ€ ์—†๋Š” `๊ตฌํ˜„์˜ ์ผ๋ถ€๋ฅผ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ์ถ˜๋‹ค.`

- ์ ์ ˆ์น˜ ๋ชปํ•œ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ **๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด ์ •๋ณด๋ฅผ ๋ณดํ˜ธ**ํ•  ์ˆ˜ ์žˆ๋‹ค.
- ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ **์˜์กด์„ฑ, ์ฆ‰ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ํšจ๊ณผ**๊ฐ€ ์žˆ๋‹ค.

**๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ๊ณต๊ฐœ๋ฒ”์œ„ ์„ค์ •**

๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ทธ ํด๋ž˜์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉค๋ฒ„(ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•˜์—ฌ `public, private, protected ๊ฐ™์€ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ์„ ์–ธํ•˜์—ฌ ๊ณต๊ฐœ ๋ฒ”์œ„๋ฅผ ํ•œ์ •` ํ•  ์ˆ˜ ์žˆ๋‹ค.

- public์œผ๋กœ ์„ ์–ธ๋œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ: ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•˜๋‹ค.
- private์œผ๋กœ ์„ ์–ธ๋œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ: ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.

> **์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” public, private, protected๊ฐ™์€ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.**
๋”ฐ๋ผ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋Š” **๊ธฐ๋ณธ์ ์œผ๋กœ ์™ธ๋ถ€์— ๊ณต๊ฐœ**๋˜์–ด ์žˆ๋‹ค.
(๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ public์ด๋‹ค.)

ํ•˜์ง€๋งŒ, 2021๊ธฐ์ค€ **ํด๋ž˜์Šค์— private ํ•„๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํ‘œ์ค€ ์‚ฌ์–‘์ด ์ œ์•ˆ**๋˜์—ˆ๋‹ค.

---

### ๐Ÿ“Œ 24-6. ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜

**์ „์—ญ ๋ณ€์ˆ˜์˜ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ**

```js
// ๋ฌธ์ œ๋ฐœ์ƒ ์ฝ”๋“œ
var funcs = [];

for (var i = 0; i < 3; i++) {
funcs[i] = function () {
return i;
};
}

for (var j = 0; j < funcs.length; j++) {
console.log(funcs[j]());
}

// ์ฝ”๋“œ ๊ฐœ์„ 
const funcs = [];

for (let i = 0; i < 3; i++) {
funcs[i] = function () {
return i;
};
}

for (let i = 0; i < funcs.length; i++) {
console.log(funcs[i]()); // 0 1 2
}
```

์œ„ ์ฝ”๋“œ๋Š” ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ์ด๋‹ค.

ํ•ด๋‹น ์ฝ”๋“œ๋Š” funcs ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€๋œ 3๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ 0,1,2 ๋ฅผ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ–ˆ์ง€๋งŒ
์•„์‰ฝ๊ฒŒ๋„ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ i ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ๋ณ€์ˆ˜์ด๋‹ค.

์ „์—ญ ๋ณ€์ˆ˜ i์—๋Š” ๊ฐ๊ฐ 0, 1, 2๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹น๋˜๊ณ  funcs ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ „์—ญ ๋ณ€์ˆ˜ i ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ i์˜ ๊ฐ’์ด 3์ด ์ถœ๋ ฅ๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ES6์˜ let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ๋œ๋‹ค.

> **let์ด๋‚˜ const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ**์€ ์ฝ”๋“œ๋ธ”๋ก์„ **๋ฐ˜๋ณต ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜๋ณตํ•  ๋‹น์‹œ์˜ ์ƒํƒœ๋ฅผ ๋งˆ์น˜ ์Šค๋ƒ…์ˆ์„ ์ฐ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์ €์žฅ**ํ•œ๋‹ค.

0 comments on commit f939aca

Please sign in to comment.