Frontend/JavaScript

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

wam 2024. 3. 23. 22:08
πŸ’‘ λ ‰μ‹œμ»¬ ν™˜κ²½ - μ‹λ³„μžμ™€ μŠ€μ½”ν”„ 관리

πŸ’‘μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ - μ½”λ“œ μ‹€ν–‰ μˆœμ„œ 관리

 

 

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

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리 κ°œλ…μ„ 톡해 μ•„λž˜ λ‚΄μš©μ„ 이해할 수 μžˆλ‹€.

  • μŠ€μ½”ν”„ 기반으둜 μ‹λ³„μžμ™€ μ‹λ³„μžμ— λ°”μΈλ”©λœ 값을 κ΄€λ¦¬ν•˜λŠ” 방식
  • ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜λŠ” 이유
  • ν΄λ‘œμ € λ™μž‘ 방식
  • νƒœμŠ€ν¬μ™€ 큐와 ν•¨κ»˜ λ™μž‘ν•˜λŠ” 이벀트 ν•Έλ“€λŸ¬
  • 비동기 처리의 λ™μž‘ 방식

 

 

μ†ŒμŠ€ μ½”λ“œμ˜ νƒ€μž…

 

4κ°€μ§€ νƒ€μž… μ½”λ“œλŠ” μ‹€ν–‰ μ»¨νƒμŠ€νŠΈλ₯Ό μƒμ„±ν•œλ‹€.

 

4κ°€μ§€λ‘œ κ΅¬λΆ„ν•˜λŠ” μ΄μœ λŠ”?

μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž…μ— 따라 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜λŠ” κ³Όμ •κ³Ό 관리 λ‚΄μš©μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ΄λ‹€.

 

μ „μ—­ μ½”λ“œ

  • 전역에 μ •μ˜λœ ν•¨μˆ˜, 클래슀 λ“±μ˜ λ‚΄λΆ€ μ½”λ“œλŠ” ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€.
  • var ν‚€μ›Œλ“œ, ν•¨μˆ˜μ„ μ–Έλ¬Έ

 

ν•¨μˆ˜ μ½”λ“œ

  • ν•¨μˆ˜ 내뢀에 μ€‘μ²©λœ ν•¨μˆ˜, 클래슀 λ“±μ˜ λ‚΄λΆ€ μ½”λ“œλŠ” ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€.
  • μ§€μ—­ μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•˜κ³  μ§€μ—­λ³€μˆ˜, λ§€κ°œλ³€μˆ˜, arguments 객체λ₯Ό 관리

 

eval μ½”λ“œ

  • 빌트인 μ „μ—­ ν•¨μˆ˜μΈ eval ν•¨μˆ˜μ— 인수둜 μ „λ‹¬λ˜μ–΄ μ‹€ν–‰λ˜λŠ” μ†ŒμŠ€ μ½”λ“œ
  • strict mode(엄격 λͺ¨λ“œ)μ—μ„œ μžμ‹ λ§Œμ˜ λ…μžμ μΈ μŠ€μ½”ν”„ 생성

 

λͺ¨λ“ˆ μ½”λ“œ

  • λͺ¨λ“ˆ λ‚΄λΆ€μ˜ ν•¨μˆ˜, 클래슀 λ“±μ˜ λ‚΄λΆ€ μ½”λ“œλŠ” ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€.
  • λͺ¨λ“ˆλ³„λ‘œ 독립적인 μŠ€μ½”ν”„ 생성

 

 

μ†ŒμŠ€ μ½”λ“œμ˜ 평가와 μ‹€ν–‰

 

 

 

  1. μ†ŒμŠ€ μ½”λ“œμ˜ 평가 (μ„ μ–Έλ¬Έ)
    • μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό 생성
    • λ³€μˆ˜, ν•¨μˆ˜ λ“±μ˜ μ„ μ–Έλ¬Έλ§Œ λ¨Όμ € μ‹€ν–‰
    • μƒμ„±λœ λ³€μˆ˜λ‚˜ ν•¨μˆ˜ μ‹λ³„μžλ₯Ό ν‚€λ‘œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ— 등둝
    • λ ‰μ‹œμ»¬ ν™˜κ²½μ˜ ν™˜κ²½ λ ˆμ½”λ“œ (μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„)

  2. μ†ŒμŠ€ μ½”λ“œμ˜ μ‹€ν–‰ (μ„ μ–Έλ¬Έ μ΄μ™Έμ˜ λ¬Έ)
    • μ†ŒμŠ€ μ½”λ“œ 평가 과정이 λλ‚˜λ©΄ 선언문을 μ œμ™Έν•œ μ†ŒμŠ€ μ½”λ“œκ°€ 순차적으둜 μ‹€ν–‰λ˜κΈ° μ‹œμž‘ (λŸ°νƒ€μž„ μ‹œμž‘)
    • 싀행에 ν•„μš”ν•œ 정보(λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ μ°Έμ‘°)λ₯Ό μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ—μ„œ κ²€μƒ‰ν•΄μ„œ 취득
    • λ³€μˆ˜ κ°’μ˜ λ³€κ²½ λ“± μ†ŒμŠ€ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³ΌλŠ” λ‹€μ‹œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ— λ“±λ‘λœλ‹€.

 

 

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ μ—­ν• 

 

λ ‰μ‹œμ»¬ ν™˜κ²½

  • μ‹λ³„μžμ™€ μŠ€μ½”ν”„ 관리
  • μ½”λ“œκ°€ 어디에 μ‹€ν–‰λ˜λ©° 주변에 μ–΄λ–€ μ½”λ“œκ°€ μžˆλŠ”μ§€λ₯Ό λ ‰μ‹œμ»¬ ν™˜κ²½μ΄λΌκ³  λΆ€λ₯Έλ‹€.

 

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ

  • μ½”λ“œ μ‹€ν–‰ μˆœμ„œ 관리

 

 

λ ‰μ‹œμ»¬ ν™˜κ²½

var x = 1;
const y = 2;

function foo (a) {
	var x = 3;
	const y = 4;

	function bar (b){
		const z = 5;
		console.log(a + b + x + y + z);
	}
	bar(10);
}

foo(20); // 42