π 리λμ€μμ λ―Έλ€μ¨μ΄ μ²ν¬μ μν μ λκΉμ?
리λμ€μ λ€κ°μ§ κ΅¬μ± μμ
- λ·°μμ μνκ°μ λ³κ²½μν€κ³ μΆμ λ μ‘μ
μ λ°μμν¨λ€.
- λ·°μμ dispatchλ₯Ό νΈμΆνμ¬, 리λμ€μκ² μ‘μ μ΄ λ°μν¨μ μλ¦¬κ² λλ€.
- μ‘μ
μ λ°μμν€λ©΄, κ·Έ μ‘μ
μ λ―Έλ€μ¨μ΄κ° μ²λ¦¬νλ€.
- λ―Έλ€μ¨μ΄λ μ΅μ λμ΄λ€. κΈ°λ₯μ λ£μλ€λ©΄ λ―Έλ€μ¨μ΄κ° μ€κ°μ μ²λ¦¬λ₯Όνκ³ λ―Έλ€μ¨μ΄κ° μλ€λ©΄, μ‘μ μ λ°λ‘ 리λμλ‘ λμ΄κ°λ€.
- 리λμμμλ ν΄λΉ μ‘μ μ μν΄μ(μ‘μ νμ ) μνλ₯Ό μ΄λ»κ² λ³κ²½ν μ§ λ‘μ§μ΄ λ΄κ²¨μ Έ μλ€. κ·Έ λ‘μ§μ λ§κ² μλ‘μ΄ μνκ°μ λ°ννλ€.
- μλ‘μ΄ μνκ°μ μ€ν μ΄μκ² λλ¬νκ²λκ³ , μ€ν μ΄λ μλ‘μ΄ μνκ°μ μ μ₯νλ€.
- μ€ν μ΄λ₯Ό λ°λΌλ³΄κ³ μλ μ΅μ λ²λ€μ΄ μλλ°, μ΅μ λ²λ€μ λ°μ΄ν°μ λ³κ²½ μ¬μ€μ μκ²λλ€. μ£Όλ‘ "λ·°"κ° μ΅μ λ²κ° λλλ°, λ·°λ λ°μ΄ν°κ° λ³κ²½ λμλ€λ μ¬μ€μ μλ©΄ νλ©΄μ κ°±μ νλ€.
λ―Έλ€μ¨μ΄λ?
λ―Έλ€μ¨μ΄λ μ‘μ μ΄ λμ€ν¨μΉ λ λ€μ 리λμμμ μ‘μ μ μ²λ¦¬νκΈ° μ μ μ‘μ μ λ°μμμ μ‘μ μ μ·¨μμν€κ±°λ λ€λ₯Έ μ’ λ₯μ μ‘μ μ μΆκ°μ μΌλ‘ λμ€ν¨μΉνλλ± μ λ°μ΄νΈ μ΄μ μ μΆκ°μ μΈ μμ μ ν μ μλλ‘ λμμ£Όλ μν μ΄λ€.
μ¦ λ¦¬λμ λ΄μ μ΄λ€ λ‘μ§μ΄ μ€νλκΈ° μ¬μ΄μ μ€κ°λ€λ¦¬ μν μ ν΄μ€ ν¨μλ€μ μμ±νλ 곡κ°μ΄λ€.
π thunkλ₯Ό μ¬μ©νλ©΄ μ°λ¦¬κ° dispatchλ₯Ό ν λ κ°μ²΄κ° μλ ν¨μλ₯Ό dispatch ν μ μκ² ν΄μ€λ€. μ¦ dispatch(κ°μ²΄) κ° μλλΌ dispatch(ν¨μ)λ₯Ό ν μ μκ² λλ κ².κ·Έλμ μ€κ°μ μ°λ¦¬κ° νκ³ μ νλ μμ μ ν¨μλ₯Ό ν΅ν΄ λ£μ μ μκ³ , κ·Έκ²μ΄ μ€κ°μ μ€νμ΄ λλ κ²μ΄λ€. κ·Έλμ μλ νλ¦κ³Ό κ°μ΄ μ€νμ΄ λλ©° μ΄ ν¨μλ₯Ό thunk ν¨μλΌκ³ λΆλ₯Έλ€.dispatch(ν¨μ) → ν¨μμ€ν → ν¨μμμμ dispatch(κ°μ²΄)λ³΄ν΅ μ°λ¦¬κ° 리λμ€ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©νλ μ΄μ λ μλ²μμ ν΅μ μ μν΄μ μ¬μ©νλ κ²μ΄ λλΆλΆμ΄λ€. |
π νλ‘λ―Έμ€λ μ νν λ§νλ©΄ λΉλκΈ°κ° μλλλ€. λΉλκΈ°μ νλ‘λ―Έμ€λ κ°κ° 무μμΌκΉμ?
λκΈ°μ λΉλκΈ°μ ꡬλΆμ μμ²λ°κ³ μλ΅λ°λ μκ°λμ μ°¨μ΄μ΄λ€.
μμ²νκ³ -μλ΅λ°λ μκ°μ νλμ λ°μ€(box)λ‘ μ μνλ€λ©΄, λκΈ°λ λ°μ€ μμμ μμ§μ΄κ³ , λΉλκΈ°λ λ°μ€λ₯Ό λ²μ΄λ μλλλ μ리μ΄λ€.
- λκΈ°μμ²μ νλ©΄ (λ°λ‘) μλ΅μ λ°λλ€λ μλ―Έμμ²κ³Ό μλ΅μ΄ κ°μ μκ°λ “μμ” κ³ μ λμ΄ μμ΄, μμ²μ λν΄ μλ΅μ΄ μλ£λκΈ°κΉμ§ νλ‘κ·Έλ¨μ΄ μ μ§νλ€.
- μλ΅μ λ°κ³ λμμΌ λΉλ‘μ λ€μ μ§νλλ νΉμ±μ κ°μ§λ€.λΉλκΈ°μμ² ν λ΄μ©μ μΈμ κ° μλ΅ν΄ μ€ κ²μ΄λΌλ μ½μμ μλ―Ένλ€.
- μμ²-μλ΅ κ° κ²°ν©μ΄ μμ λ‘μ νλ‘κ·Έλ¨μ΄ μλ΅ λ°κΈ° μν΄ λκΈ°νμ§ μκ³ μ§νλλ νΉμ±μ΄ μλ€. μΆν μλ΅μ λ°μ ν λ€μ λ‘μ§μ μν νλ€.
- Promiseμλ°μ€ν¬λ¦½νΈμμ λΉλκΈ° νλ‘κ·Έλλ°μ μν΄ μ½λ°±μ μ¬μ©νλ€. Promiseλ μ ν΅μ μΈ μ½λ°± ν¨ν΄μ΄ κ°μ§ λ¨μ μ μΌλΆ 보μνλ©° λκΈ° μ²λ¦¬ μμ μ λͺ ννκ² νννλ€.
- Promiseλ λΉλκΈ° μ²λ¦¬ λ‘μ§μ μΆμνν κ°μ²΄μ κ·Έκ²μ μ‘°μνλ λ°©μμ λ§νλ€. Promise κ°μ²΄μμ μ 곡νλ λ©μλλ§ μ¬μ©ν΄μΌ νλ―λ‘ μΈμκ° κ°μ λ°©μμΌλ‘ ν΅μΌλλ€. 볡μ‘ν λΉλκΈ° μ²λ¦¬λ₯Ό μ½κ² ν¨ν΄νν μ μλ€.
π TDZ(Temporal Dead Zone/μΌμμ μ¬κ°μ§λ)λ?
TDZ λ?
TDZ λ Temporal Dead Zone μ μ½μλ‘ μ°λ¦¬ λ§λ‘ λ²μνλ©΄ μΌμμ μ¬κ°μ§λλΌλ μλ―Έμ΄λ©°, μ€μ½ν μμ ~ μ΄κΈ°ν μμ μ¬μ΄μ ꡬκ°μ μλ―Ένλ€. λ€λ₯Έ λ§λ‘ λ³μκ° μ μΈλκ³ λ³μμ μ΄κΈ°νκ° μ΄λ£¨μ΄μ§κΈ° μ κΉμ§μ ꡬκ°μ΄λΌκ³ λ§ν μ μλ€.
TDZ μμλ μ μΈ λκΈ° μ μ΄κ±°λ μ΄κΈ°ν λκΈ° μ μΈ μνμ λ³μλ₯Ό μ¬μ©νλ κ²μ νμ©νμ§ μλλ€.
κ·Έλμ TDZ κ΅¬κ° λ μ μΈλμ§ μκ±°λ μ΄κΈ°ν μ μΈ λ³μλ₯Ό μ°Έμ‘°νκ² λλ©΄ μλ¬κ° λ°μνκ² λλ€.
λ³μ μμ± λ¨κ³
TDZ λ₯Ό μ΄ν΄νκΈ° μν΄μλ Javascript μ λ³μ μμ± λ¨κ³λ₯Ό λ¨Όμ μμμΌ νλ€.
- μ μΈ λ¨κ³ (Declaration phase): λ³μλ₯Ό μ€ν 컨ν μ€νΈμ λ³μ κ°μ²΄μ λ±λ‘νλ λ¨κ³μ΄λ€.
- μ΄κΈ°ν λ¨κ³ (Initialization phase): μ€ν 컨ν μ€νΈμ λ±λ‘ν λ³μλ₯Ό μν λ©λͺ¨λ¦¬λ₯Ό λ§λλ λ¨κ³, λ©λͺ¨λ¦¬κ° λ§λ€μ΄μ§λ©΄ μ²μμλ undefined κ° ν λΉλλ€.
- ν λΉ λ¨κ³ (Assignment phase): μ¬μ©μκ° undefined λ‘ ν λΉλ λ³μμ λ€λ₯Έ κ°μ ν λΉνλ λ¨κ³μ΄λ€.
- var λ μ μΈκ³Ό μ΄κΈ°ν λ¨κ³κ° λμμ μ΄λ£¨μ΄μ§λ€.
- let, const λ μ μΈ, μ΄κΈ°ν, ν λΉ λ¨κ³κ° κ°κ° λ°λ‘ μ΄λ£¨μ΄μ§λ€.
- function (ν¨μ μ μΈλ¬Έ) μ μ μΈ, μ΄κΈ°ν, ν λΉ λ¨κ³κ° λμμ μ΄λ£¨μ΄μ§λ€.
κ·Έλ κΈ° λλ¬Έμ μ μΈκ³Ό μ΄κΈ°ν λ¨κ³κ° λ°λ‘ μ΄λ£¨μ΄ μ§λ let, const κ°μ κ²½μ°λ TDZμ μν₯μ λ°μ μ λ°μ μλ€.
TDZ μμ
μΆμ²: https://velog.io/@leejpsd
TDZ μ μν₯μ λ°λ κ²
- let
- const
- class
- classμ constructor() λ΄λΆμ super() (ν΄λΉ ν΄λμ€μ contructor μμ super ν¨μκ° νΈμΆλκΈ° μ κΉμ§λ ν΄λΉ ν΄λμ€μμ this λ₯Ό μ°Έμ‘°νλ©΄ μλ¬ λ°μ)
- ν¨μ λ§€κ°λ³μ (λ§€κ°λ³μ μ μΈ μ μ μ°Έμ‘°νλ©΄ μλ¬ λ°μ)
TDZ μ μν₯μ λ°μ§ μλ κ²
- var
- function (ν¨μ μ μΈμ)
- import (import ꡬ문)
π Q1. 리λμ€ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©νλ©΄ μ‘μ μ΄ λμ€ν¨μΉ λ λ€μ, 리λμμμ ν΄λΉ μ‘μ μ λ°μμμ μ λ°μ΄νΈνκΈ° μ μ μΆκ°μ μΈ μμ μ ν μ μμ΅λλ€. μΆκ°μ μΈ μμ λ€μλ 무μμ΄ μμκΉμ?
- νΉμ 쑰건μ λ°λΌ μ‘μ μ΄ λ¬΄μλκ² λ§λ€ μ μλ€.
- μ‘μ μ μ½μμ μΆλ ₯νκ±°λ, μλ²μͺ½μ λ‘κΉ μ ν μ μλ€.
- μ‘μ μ΄ λμ€ν¨μΉ λμ λ μ΄λ₯Ό μμ ν΄μ 리λμμκ² μ λ¬λλλ‘ ν μ μλ€.
- νΉμ μ‘μ μ΄ λ°μνμ λ μ΄μ κΈ°λ°νμ¬ λ€λ₯Έ μ‘μ μ΄ λ°μλλλ‘ ν μ μλ€.
- νΉμ μ‘μ μ΄ λ°μνμ λ νΉμ μλ°μ€ν¬λ¦½νΈ ν¨μλ₯Ό μ€νμν¬ μ μλ€.
πQ2. 리λμ€λ₯Ό μ¬μ©νλ μ΄μ λ 무μμΌκΉμ?
리μ‘νΈμμ λ°μ΄ν°λ λ¨λ°©ν₯(λΆλͺ¨μμ μμ λ°©ν₯μΌλ‘)μΌλ‘ νλ₯΄κΈ° λλ¬Έμ μμμ»΄ν¬λνΈμμ λΆλͺ¨μ»΄ν¬λνΈμ λ°μ΄ν°μ μ κ·Όν μ μλ€.
리λμ€λ λͺ¨λ μ»΄ν¬λνΈμμ μ κ·Όν μ μλ μ μ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬ μ΄λ€.
리λμ€λ λ°μ΄ν°λ₯Ό μ μ₯νλ μ€ν μ΄μ λ°μ΄ν°μ μ κ·Όν΄μ λ°μ΄ν°λ₯Ό μμ ν μ μλ 리λμκ° μλ€.
μΆμ² https://www.notion.so/Chapter-3-3-b80a41499fc9485b887906b77f50bafc
'μ΄λ Έλ² μ΄μ μΊ ν > μ§μμκΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
첫 νμ μ νλ©° λλ μ (μ€μ€λ‘ μμ¬μ λ μ / 보μνκ³ μΆμ μ ) (0) | 2022.09.11 |
---|---|
λΌμ΄νμ¬μ΄ν΄(ν΄λμ€ν vs ν¨μν), react hooks (0) | 2022.08.28 |
React DOM, μλ²λ¦¬μ€ (0) | 2022.08.18 |
JWT, API (0) | 2022.08.14 |
SPA λ°©μκ³Ό MPA λ°©μ (0) | 2022.08.13 |