23.7.13 TIL

๊น€์ง„์ฃผยท2023๋…„ 7์›” 13์ผ
0

TJL(Today Jinju Learned)

๋ชฉ๋ก ๋ณด๊ธฐ
24/35

๐Ÿ“Œclass

ํด๋ž˜์Šค vs ๊ฐ์ฒด ์ฝ”๋“œ ๋น„๊ต


์™ธ๋ถ€์—์„œ beom.prey๋กœ ์ ‘๊ทผ ๋ถˆ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋‚ด๋ถ€์—์„œ๋Š” prey๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค


 static sleep(name) {
    console.log(name + '์ด ์ž ์„ ์ž”๋‹ค.');
  }

static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์€ ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ์ •์  ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. => ๋ชจ๋‘๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฐ”๋€œ
์ •์  ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ํด๋ž˜์Šค๋ช…์„ ํ†ตํ•ด ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, beom.sleep()๊ณผ ๊ฐ™์ด ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด์ธ beom์—์„œ static ๋ฉ”์„œ๋“œ์ธ sleep()์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž…๋‹ˆ๋‹ค. ์ •์  ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์ˆ˜์ค€์—์„œ ๊ณต์œ ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Tiger.sleep('๋ฒ”')๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค๋ช…์„ ํ†ตํ•ด ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

๐Ÿ“Œclosure

ํด๋กœ์ €๋ž€?
JavaScript์˜ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ํŠน์„ฑ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
โ˜… ์ฆ‰, ํด๋กœ์ €์— ์ •์˜๋œ ํ•จ์ˆ˜๋Š” ๊ทธ๊ฒƒ์ด ์ž‘์„ฑ๋œ ํ™˜๊ฒฝ์„ '๊ธฐ์–ต'ํ•ฉ๋‹ˆ๋‹ค.
ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. ์ „์—ญ์˜ ์˜ค์—ผ์„ ๋ง‰๊ธฐ ์œ„ํ•ด
  2. ๊ฐ’์„ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ˆ˜์ง‘ x)
  3. ํ•จ๋ถ€๋กœ ๋‚ด๊ฐ€ ์„ค์ •ํ•œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๊ณ  ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด
function first() {
  let x = 10;
  
  function second() {
    let y = 5;
    return x + y;
  }
  // return x;
  return second // ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ ๋ณธ๋ฌธ์„ ๋‚ด๋ณด๋ƒ„
}

first() //  function second() {
        //     let y = 5;
        //    return x + y;
        //   }

//currying function
const value = first() //first()() // 15

first ๋‚ด๋ถ€์— ์žˆ๋Š” second๋ฅผ ์‹คํ–‰์‹œํ‚จ ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒŒ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ first์˜ return ๊ฐ’์œผ๋กœ ๋‚ด๋ณด๋ƒˆ๋‹ค.

function counter(){
  let count = 0;

  count++;

  return count;
}


let result = counter();

ํด๋กœ์ €๋ฅผ ์ด์šฉํ•œ counter ํ•จ์ˆ˜


๐Ÿค” ๋งŒ์•ฝ ํ˜ธ๋ž‘์ด๊ฐ€ ์ง€๊ตฌ์—์„œ ์ซ“๊ฒจ๋‚œ ํ›„์— ์ง€๊ตฌ์— ์ƒˆ๋กœ์šด ํ‚ค, ๋ฐธ๋ฅ˜๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๊ทธ๊ฒƒ๋„ ํ˜ธ๋ž‘์ด๊ฐ€ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? โœ… yes
๐Ÿค” ๊ทธ๋Ÿผ ํด๋กœ์ €๋ฅผ ํ†ตํ•ด earth() ์•ˆ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋‚ด๋ถ€ function์— ์ ์–ด์ค˜์•ผ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฑด๊ฐ€์š”?
โœ… yes
๐Ÿค”๊ทธ๋Ÿผ water๋‚˜ apple์€ ์ ‘๊ทผ ๋ชปํ•˜๋Š”๊ฑด๊ฐ€์š”??
,๊ทธ๋Ÿผ ๋ณดํ†ต ์™ธ๋ถ€ function์—๋Š” ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋‚ด๋ถ€ function์—๋Š” ์‹คํ–‰ ์‹œํ‚ฌ๋‚ด์šฉ์„ ์ง€์ •ํ•˜๋ฉด๋˜๋Š”๊ฑฐ์ฃ ?
โœ… yes

value์—๋Š” second๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ๊ฒƒ ์ด์ง€๋งŒ second ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ์ž‘์„ฑ๋œ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
earth() ์ „์ฒด๊ฐ€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์ˆ˜์ง‘ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

profile
์ง„์ฃผ๋ง๋”ฉ๋™๐ŸŽต

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