[JS] πŸ“ μŠ€μ½”ν”„μ™€ μ»΄νŒŒμΌλ ˆμ΄μ…˜ ⭐

Mec.D's BlogΒ·2022λ…„ 6μ›” 1일
0

JS ES6+ 비곡식 λ…ΈνŠΈ

λͺ©λ‘ 보기
11/17
post-thumbnail

πŸ”­ μŠ€μ½”ν”„

πŸ’‘ μŠ€μ½”ν”„ (Scope)

λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” λ²”μœ„λ₯Ό λ§ν•©λ‹ˆλ‹€.


비ꡐ

πŸ’‘ 정적 μŠ€μ½”ν”„ (Lexical Scope)

μ„ μ–Έμ‹œμ , 곧 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ½”λ“œλ₯Ό μž‘μ„±ν•œ μœ„μΉ˜μ— 따라 κ²°μ •λ˜λŠ” μŠ€μ½”ν”„μž…λ‹ˆλ‹€.

β‰’ 사전 νŽΈμ°¬μ‹ μŠ€μ½”ν”„

νŠΉμ§•

  1. JS의 경우 μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° 직전 μ»΄νŒŒμΌλ ˆμ΄μ…˜ κ³Όμ • (JIT) 의 1단계인 ν† ν¬λ‚˜μ΄μ§•/λ ‰μ‹± μ‹œ μ •μ μœΌλ‘œ μŠ€μ½”ν”„κ°€ κ²°μ •λ©λ‹ˆλ‹€.

πŸ’‘ 동적 μŠ€μ½”ν”„ (Dynamic Scope)

λŸ°νƒ€μž„μ— ν˜ΈμΆœλ˜λŠ” μ»¨ν…μŠ€νŠΈμ— 따라 κ²°μ •λ˜λŠ” μŠ€μ½”ν”„μž…λ‹ˆλ‹€.


🧳 JIT μ»΄νŒŒμΌλ ˆμ΄μ…˜

πŸ’‘ JIT 컴파일

μ‹€μ‹œκ°„ (λŸ°νƒ€μž„) 으둜 λ°”μ΄νŠΈ μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•˜λŠ” 컴파일 κΈ°λ²•μž…λ‹ˆλ‹€.

단계

βœ… 1단계 : ν† ν¬λ‚˜μ΄μ§• / λ ‰μ‹± (Tokenizing / Lexing)

μ½”λ“œλ₯Ό ν† ν°μ΄λΌλŠ” 의미 μžˆλŠ” 쑰각으둜 λ‚˜λˆ„λ©° 이 λ•Œ μŠ€μ½”ν”„κ°€ κ²°μ •λ˜λ―€λ‘œ JSλŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό κ°–μŠ΅λ‹ˆλ‹€. ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜λŠ” 원인이기도 ν•©λ‹ˆλ‹€.

βœ… 2단계 : νŒŒμ‹± (Parsing)

토큰 배열을 JS 문법을 κ΅¬μ‘°ν™”ν•œ 좔상 ꡬ문 트리 (AST) ν˜•νƒœλ‘œ λ°”κΏ‰λ‹ˆλ‹€.

βœ… 3단계 : μ½”λ“œ 생성

ASTλ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ λ°”μ΄νŠΈμ½”λ“œ (기계어 x) 둜 μ»΄νŒŒμΌν•©λ‹ˆλ‹€.

profile
기술둜 더 λ‚˜μ€ 미래λ₯Ό λ””μžμΈν•˜λŠ” 개발자 MEC:D μž…λ‹ˆλ‹€

0개의 λŒ“κΈ€