closer ๋‚ด ๋ง˜~๐ŸŽถ ์•„๋‹ˆ๊ณ , Closure( ํด๋กœ์ €)

Judyยท2022๋…„ 1์›” 11์ผ
1

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
13/14
post-thumbnail

ํด๋กœ์ €

  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋งŒ๋“  ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ.
function ์™ธ๋ถ€ํ•จ์ˆ˜() {
    var ๋ณ€์ˆ˜;
     function ๋‚ด๋ถ€ํ•จ์ˆ˜(){
         ๋ณ€์ˆ˜ A ์‚ฌ์šฉ;  
     }
}
  • ํด๋กœ์ €๋Š” ๋ฌธ๋ฒ•์ผ๊นŒ์š”? ์•„๋‹ˆ์š”
  • ๋ณ€์ˆ˜ A๋Š” ํด๋กœ์ € ํ˜„์ƒ์— ์˜ํ•ด ์™ธ๋ถ€ํ•จ์ˆ˜() ํ˜ธ์ถœ์ด ๋๋‚˜๋”๋ผ๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๊ฐ’์„ ์œ ์ง€.


function addCount() {
  var count = 0;
  return ++count;
}

console.log(addCount()) ; // 1
console.log(addCount()) ; // 1
console.log(addCount()) ; // 1
  • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” API
  • 1๋งŒ ์ถœ๋ ฅ ๋˜๋„ค ์™œ?
    ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด var count๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด์ฆ๊ฐ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด 1์ด ๋ฆฌํ„ด์ด ๋œ๋‹ค.

function cloCount() {
  var count = 0;

  function addCount() {
     return ++count;
  }
  return addCount;
}

var counter = cloCount();

console.log(addCount()) ; // 1
console.log(addCount()) ; // 2
console.log(addCount()) ; // 3

์ฝ”๋“œ ์ง๋…์งํ•ด

  1. cloCount( )ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ง€์—ญ๋ณ€์ˆ˜ 0์ด ์ดˆ๊ธฐํ™” ํ• ๋‹น ๋งŒ๋“ค์–ด์ง.
  2. ๋‚ด๋ถ€์— addCount( )ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  cloCount( )ํ•จ์ˆ˜๋Š” ์ข…๋ฃŒ.
  3. counter( )๊ฐ€ ์‹คํ–‰๋˜๋ฉด addcount( )ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด์„œ count๊ฐ’์ด 0 ์—์„œ 1 ๋กœ ์ฆ๊ฐ€. // 1 ์ถœ๋ ฅ
  4. counter( )๊ฐ€ ์‹คํ–‰๋˜๋ฉด count๊ฐ’์ด ์ฆ๊ฐ€. // 2 , 3 ์ถœ๋ ฅ
  • ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ๊ฐ’์„ ์œ ์ง€ํ•˜๋Š” ์ƒํƒœ๋ฅผ ํด๋กœ์ €๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ๋‚ด๋ถ€์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํด๋กœ์ € ํ•จ์ˆ˜๋ผ๊ณ  ํ•จ.

  1. var myHome = Korea(); ๋ฅผ ํ†ตํ•ด์„œ home ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์†Œ๋ฉธ

  1. ํด๋กœ์ €๋Š” ์ด๋Ÿฌํ•œ(์™ธ๋ถ€ ๋ณ€์ˆ˜์™€ ๊ฐ™์€) ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ํ†ต์งธ๋กœ ๊ธฐ์–ตํ•˜๋Š” ๊ณต๊ฐ„์„ ํ˜•์„ฑํ•œ๋‹ค.

ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ 

โœ…ย ์—ฐ๊ด€ ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ๊ธฐ๋Šฅ(์ค‘์ฒฉ ํ•จ์ˆ˜)์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ๋ฌถ์–ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

โœ…ย ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โ†’ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” private ๋ฐ์ดํ„ฐ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์•ผ?

โœ…ย  ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ( ์žฅ์  )

(1) ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํด๋กœ์ €๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์ฝ”ํ”„ ์•ˆ์— ๊ฐ€๋‘์–ด ๋‘” ์ฑ„๋กœ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ํ์‡„์„ฑ์„ ๊ฐ–๋Š”๋‹ค.
const adder = function(x) {
     return function(y) {
          return x + y;
     }            
} //adder(x)(y)๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
const add5 = adder(5)
add5(7) // 12 (7+5)
// adder๋ผ๋Š” ํ•จ์ˆ˜ ๋ฐ–์œผ๋กœ ๋‚˜์™”์–ด๋„ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ x ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด 5๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
// ์ด๋Š” ์–ดํœ˜์  ํ™˜๊ฒฝ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
add5(10) // 15 (5+10)

(2) ์ •๋ณด์˜ ์ ‘๊ทผ ์ œํ•œ (์บก์Šํ™” : ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กด, ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ)

  • โ€˜ํด๋กœ์ € ๋ชจ๋“ˆ ํŒจํ„ดโ€™์„ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด์— ๋‹ด์•„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ณด์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์„ ์บก์Šํ™”๋ผ๊ณ  ํ•œ๋‹ค.
const makeResult = () => {
  let value = 0;
  return {
          increase: () => {
                 value = value + 1
          },
          decrease: () => {
                 value = value - 1
          },
          getResult: () => value
   }
}
const make1 = makeResult();
  • ๋ฐ์ดํ„ฐ ๋ณด์กด์„ ํ†ตํ•ด value = 0 ์‚ฌ์šฉ๊ฐ€๋Šฅ

  • make1์€ Increase, decrease, getResult๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๊ฐ€ ๋จ.

  • ๋งŒ์•ฝ ํด๋กœ์ € ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด? ํ•จ์ˆ˜ ๋‚ด๋ถ€์— value๋ฅผ ๋‘์ง€ ๋ชปํ•˜๊ณ , value๋Š” ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

  • ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค๊ณ ?
    โ†’ ๋ถ€์ˆ˜ ํšจ๊ณผ๋กœ ์ธํ•ด์„œ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์–ด!

  • ๋‚ด๋ถ€์— value ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์‰ฝ๊ฒŒ value๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค!
    โ†’ ํด๋กœ์ €๋ฅผ ์ด์šฉํ•ด์„œ ์ „์—ญ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ์ค„์ด๊ณ ,
    ์Šค์ฝ”ํ”„๋ฅผ ์ด์šฉํ•ด์„œ value์˜ ๊ฐ’์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค!

(3) ๋ชจ๋“ˆํ™”์— ์œ ๋ฆฌํ•˜๋‹ค.

  • ํด๋กœ์ € ํ•จ์ˆ˜๋ฅผ ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๊ฐ์ž ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ณด์กดํ•  ์ˆ˜ ์ž‡๋‹ค.
  • ํ•จ์ˆ˜์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™” ํ•จ์ˆ˜ ํ•˜๋‚˜๋ฅผ ๋…๋ฆฝ์ ์ธ ๋ถ€ํ’ˆ์˜ ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋“ˆํ™”๋ผ๊ณ  ํ•œ๋‹ค.
  • ํด๋กœ์ €๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฌถ์–ด๋‹ค๋‹ ์ˆ˜ ์žˆ๊ธฐ์— ํด๋กœ์ €๋Š” ๋ชจ๋“ˆํ™”์— ์œ ๋ฆฌํ•˜๋‹ค.
const make1 = makeResult();
make1.increase();
make1.increase();
make1.decrease();
make1.getResult(); // 1

const make2 = makeResult();
make2.decrease();
make2.decrease();
make2.decrease();
make2.getResult(); // -3
  • make1๊ณผ make2๊ฐ€ ํ•จ์ˆ˜์˜ vlaue๊ฐ’์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํด๋กœ์ € ์‚ฌ์šฉํ•  ๋•Œ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜

var funcs = [];

for(var i = 0; i < 3; i++){
 funcs[i] = function() {return i;}; 
 }
 
 for(var j =0; j < funce.length; j++){
   consoe.log(funcs[j]());
 } 

์ฝ”๋“œ ์ง๋…์งํ•ด
1) ์ฒซ๋ฒˆ์งธ for๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด ํ•จ์ˆ˜๊ฐ€ funcs ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
2) ๋‘๋ฒˆ์งธ for๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ funcs ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
3) 0,1,2๋ฅผ ๋ฐ˜ํ™˜ํ• ๊นŒ์š”? ์•„๋‹ˆ์š”.

4) for๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ i๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ -> ์ „์—ญ๋ณ€์ˆ˜
5) funcs ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ „์—ญ ๋ณ€์ˆ˜ i๋ฅผ ์ฐธ์กฐํ•˜์—ฌ i์˜ ๊ฐ’ 3์ด ์ถœ๋ ฅ๋œ๋‹ค.
6) ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค.

7) ์ „์—ญ ๋ณ€์ˆ˜ i์— ํ˜„์žฌ ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋งค๊ฐœ๋ณ€์ˆ˜ id์— ํ• ๋‹นํ•œ ํ›„ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ข…๋ฃŒ๋œ๋‹ค.
-> ๋ฐ˜ํ™˜ํ•œ ํ•จ์ˆ˜๋Š” funcs ๋ฐฐ์—ด์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ.
8) ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ์ค‘์ฒฉ ํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €์ด๋‹ค.
-> ๋งค๊ฐœ๋ณ€์ˆ˜ id๋Š” ์ค‘์ฒฉ ํ•จ์ˆ˜์— ๋ฌถ์—ฌ์žˆ๋Š” ์ž์œ  ๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด ๊ทธ ๊ฐ’์ด ์œ ์ง€.

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

9) ES6์˜ let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

10) for๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค for๋ฌธ ์ฝ”๋“œ ๋ธ”๋ก์˜ ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ด ์ƒ์„ฑ๋œ๋‹ค.
11) ์ด๋•Œ ํ•จ์ˆ˜์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” for๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค.
-> for๋ฌธ์ด ๋ฐ˜๋ณต๋  ๋•Œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์œ ์ง€.


  • for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ for๋ฌธ์€ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค for๋ฌธ ์ฝ”๋“œ ๋ธ”๋ก์˜ ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑ.
  • let, const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ˜๋ณต๋ฌธ์€ ๋ฐ˜๋ณต์„ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์— ํ•จ์ˆ˜ ์ •์˜๊ฐ€ ์—†๋Š” ๋ฐ˜๋ณต๋ฌธ์ด ์ƒ์„ฑํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ๋ฐ˜๋ณต ์งํ›„, ์•„๋ฌด๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ( --------------)์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

ํด๋กœ์ €์— ๋Œ€ํ•œ ๋ง๋ง๋ง

โœ…ย ๋ฐ˜ํ™˜๋œ ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ์„ ์–ธ๋˜์—ˆ์„๋Œ€์˜ ํ™˜๊ฒฝ์ธ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ์ž์‹ ์ด ์„ ์–ธ๋˜์—ˆ์„๋•Œ์˜ ํ™˜๊ฒฝ ๋ฐ–์—์„œ ํ˜ธ์ถœ๋˜์–ด๋„ ๊ทธ ํ™˜๊ฒฝ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜.

โ†’ ์ž์‹ ์ด ์ƒ์„ฑ๋ ๋•Œ์˜ ํ™˜๊ฒฝ์„ ๊ธฐ์–ตํ•˜๋Š” ํ•จ์ˆ˜ .

โ†’(์ฝ”์–ด) ์–ด๋–ค ํ•จ์ˆ˜์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ํ•จ์ˆ˜๋ฅผ ์™ธ๋ถ€๋กœ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ, ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์—๋„ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ํ˜„์ƒ.

โ†’ ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ๋งฅ๋ฝ(context)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅดํ‚จ๋‹ค.

โ†’ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ณ ์œ ํ•œ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ํŠน์„ฑ.


ํด๋กœ์ €์— ๋Œ€ํ•œ ์ƒ๊ฐ

๐Ÿคจ ์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ํด๋กœ์ €๋ฅผ ๋”ฑ ๋ณด์•˜์„ ๋•Œ ๋“œ๋Š” ์ƒ๊ฐ์€
์˜ค๋งˆ์ด๊ฑธ์˜ ํด๋กœ์ € ๋…ธ๋ž˜์˜€๋‹ค. ๋…ธ๋ž˜๋Š” ํฅ์–ผ๊ฑฐ๋ฆด์ •๋„๋กœ ๊ฐ€์‚ฌ๊ฐ€ ๋ฐ”๋กœ ์ตํ˜€์กŒ์ง€๋งŒ
์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํด๋กœ์ €๋Š” ๋ฐ”๋กœ ์ตํ˜€์ง€์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„ค๋ช…์„ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด
๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์„ค๋ช…์„ ๋ฐ˜๋ณตํ•ด์„œ ๋“ฃ๊ณ  ๋ณด๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ ๋…ธ๋ž˜ ๋งŒํผ ์นœ์ˆ™ํ•ด์ง€๊ณ  ์žˆ์Œ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
(๋Œ€ํ•œ๋ฏผ๊ตญ์ด๋ผ๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜์™€ ์„œ์šธ์ด๋ผ๋Š” ๋‚ด๋ถ€ํ•จ์ˆ˜? ๊ฐ•๋‚จ๋•…์ด๋ผ๋Š” ์ „์—ญ๋ณ€์ˆ˜์— ์„ธ์šด ๊ฑด๋ฌผ์ด๋ผ๋Š” ๋‚ด๋ถ€ ํ•จ์ˆ˜ ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€์— ๋น„์œ ๋ฅผ ํ•˜๋ฉฐ ์ดํ•ดํ•˜๊ณ ์ž ๋…ธ๋ ฅํ•ด๋ณด์•˜๋‹ค!)


์ฐธ๊ณ 
ํด๋กœ์ €๋ž€ ๋ฌด์—‡์ผ๊นŒ?
ํด๋กœ์ € MDN
๋ฐฑ๊ณ ๋“ฑ์–ด ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ
์ƒ๊ถŒ's TIL
์ด๋ฏธ์ง€ Judy

profile
์˜์›ํžˆ ๊ณต๋ถ€ํ•˜๋Š” ๋ฉ‹์ง„ ์žฅ์„ ์ƒ!!

0๊ฐœ์˜ ๋Œ“๊ธ€