Javascript 곡뢀

9. μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„

tnqlscho 95 2023. 7. 4. 02:11

πŸ‘€  JS μ—”μ§„?

μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨

V8 μ—”μ§„ -> Node.js / Chrome

 

πŸ‘€  JS μ—”μ§„ λ‚΄λΆ€

1. 콜 μŠ€νƒ

JSμ—μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν• λ•Œ μ“°λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μŠ€νƒμ΄λΌλŠ” 자료ꡬ쑰 ν˜•νƒœλ‘œ μŒ“μ—¬μ ΈμžˆλŠ” 곡간.

 

2. λΈŒλΌμš°μ € λŸ°νƒ€μž„

web Api(DOM, Timers, Fetch λ“±λ“±)λž‘ 콜백 큐 μš”μ†Œκ°€ 있고

콜백 νμ—μ„œ 콜백 ν•¨μˆ˜λ₯Ό λΉΌλ‚Όλ•ŒλŠ” 이벀트 루프λ₯Ό ν†΅ν•΄μ„œ λΉΌλ‚Έλ‹€.

 

3. νž™

νž™μ΄λΌλŠ” κ³΅κ°„μ•ˆμ—μ„œ μ˜€λΈŒμ νŠΈλ“€μ΄ μ €μž₯λ˜μ–΄ μžˆλ‹€.

 

4. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜λŠ” ν™˜κ²½.

λ§Œμ•½ App.jsλ₯Ό μ‹€ν–‰ν•œλ‹€κ³  ν–ˆμ„λ•Œ 컴파일 후에

1. μ „μ—­ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ
2. 생성전역 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ
3. μ‹€ν–‰ν•¨μˆ˜ μ‹€ν–‰ 및 콜백 κΈ°λ‹€λ¦Ό

μ΄μˆœμ„œλ‘œ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈκ°€ μƒμ„±μ΄λœλ‹€.

 

κ·Έλ ‡λ‹€λ©΄ μ•„λž˜μ˜ JS μ½”λ“œμ—μ„œλŠ” λͺ‡ 개의 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성이 될까?

const title = ‘Hello’;

const firstFunction = () => {
   let a = 1;
   a+=3;
   return a;
}

const secondFunction = () => {
   let b = 20;
   return b;
}

닡은 3개.

1. μ „μ—­ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

2. firstFunction μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

3. secondFunction μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

 

πŸ‘€  콜 μŠ€νƒμ˜ λ™μž‘ μˆœμ„œ

const title = ‘Hello’;

const firstFunction = () => {
   let a = 1;
   const b = secondFunction(2, 3);
   a = a + b;
   return a;
}

Function secondFunction = (x, y) => {
   Var b = 20;
   return c;
}

const x = firstFunction();

JS μ½”λ“œκ°€ 싀행이 되면 μ½”λ“œ μœ„μ—μ„œ μ•„λž˜λ‘œ μˆœμ„œλŒ€λ‘œ μ½μ–΄λ‚˜κ°„λ‹€.

1. κ·Έλ•Œ 제일 λ¨Όμ € κΈ€λ‘œλ²Œ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈλ₯Ό λ§Œλ“€μ–΄μ„œ μ½œμŠ€νƒμ— μŒ“μΈλ‹€.

2. x의  firstFunctiongν•¨μˆ˜κ°€ 싀행이 λ λ•Œ firstFunctiong() μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 또 μ½œμŠ€νƒμ— μŒ“μΈλ‹€.

3. firstFunctiongν•¨μˆ˜μ•ˆμ˜ secondFunction()κ°€ 싀행이 λ λ•Œ secondFunction() μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 또 μ½œμŠ€νƒμ— μŒ“μΈλ‹€.

 

μ—¬κΈ°κΉŒμ§€μ˜ μˆœμ„œλ‘œ μŒ“μΈ μ½œμŠ€νƒμ˜ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈ μˆœμ„œλ“€ - 1

secondFunction()
firstFunctiong()
κΈ€λ‘œλ²Œ

secondFunction()μ•ˆμ˜ cκ°€ return이 λ˜μ–΄ secondFunction() 싀행이 끝이 λ‚˜λ©΄

μ½œμŠ€νƒμ˜ λ§¨μœ„μ— μŒ“μΈ secondFunction() μ‹€ν–‰ μ»¨νƒμŠ€νŠΈκ°€ μ‚­μ œλœλ‹€.

 

μ—¬κΈ°κΉŒμ§€μ˜ μˆœμ„œλ‘œ μŒ“μΈ μ½œμŠ€νƒμ˜ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈ μˆœμ„œλ“€ - 2

firstFunctiong()
κΈ€λ‘œλ²Œ

secondFunction()싀행이 λλ‚˜λ©΄ λ‹€μ‹œ firstFunctiong()둜 λŒμ•„κ°€μ„œ aλ₯Ό return ν•˜λŠ”

λ‚˜λ¨Έμ§€ 싀행을 λͺ¨λ‘ 마치면 또 firstFunctiong() μ‹€ν–‰ μ»¨νƒμŠ€νŠΈκ°€ μ‚­μ œλœλ‹€.

 

μ—¬κΈ°κΉŒμ§€μ˜ μˆœμ„œλ‘œ μŒ“μΈ μ½œμŠ€νƒμ˜ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈ μˆœμ„œλ“€ - 3

κΈ€λ‘œλ²Œ

μ΄λ ‡κ²Œ const x의 ν•¨μˆ˜μ™€ κ·Έ ν•˜μœ„ ν•¨μˆ˜λ“€κΉŒμ§€ λͺ¨λ‘ 싀행이 마무리되면 λ§ˆμ§€λ§‰μœΌλ‘œ λ‚¨μ•„μžˆλ˜

κΈ€λ‘œλ²Œ μ‹€ν–‰ μ½˜νƒμŠ€νŠΈλ„ μ‚­μ œλœλ‹€.

 

μ—¬κΈ°κΉŒμ§€μ˜ μˆœμ„œλ‘œ μŒ“μΈ μ½œμŠ€νƒμ˜ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈ μˆœμ„œλ“€ - 4

[ λΉ„μ–΄μžˆμŒ ]

μ΄λ ‡κ²Œ JS 콜 μŠ€νƒμ€ ν•œλ²ˆμ— ν•œκ°œμ˜ μ‹€ν–‰λ§Œ μ²˜λ¦¬ν•˜λŠ”κ²ƒμ„ μ•Œ 수 μžˆλ‹€.