π₯ 26.1 ν¨μμ ꡬλΆ
ES6 μ΄μ μ ν¨μ
- ν¨μλ λ³λ€λ₯Έ κ΅¬λΆ μμ΄ λ€μν λͺ©μ μΌλ‘ μ¬μ©λ¨.
- νΈλ¦¬ν΄λ³΄μ΄μ§λ§ μ€μ μ λ° & μ±λ₯ λ©΄μμ μν΄
- μΌλ° ν¨μλ‘μ νΈμΆν μ μλ κ²μ λ¬Όλ‘ μμ±μ ν¨μλ‘μ νΈμΆν μ μμμ.
- κ°μ²΄μ λ°μΈλ© λ ν¨μλ μΌλ° ν¨μ & μμ±μ ν¨μλ‘μ λͺ¨λ νΈμΆ κ°λ₯νμ.
ES6 μ΄νμ ν¨μ
π₯ 26.2 λ©μλ
μ νν μ μκ° μκΉ.
π― λ©μλ
- λ©μλ μΆμ½ ννμΌλ‘ μ μλ ν¨μλ§μ μλ―Έ.
- μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ non-constructor -> μμ±μ ν¨μλ‘μ νΈμΆν μ μλ€.
- prototype νλ‘νΌν°κ° μκ³ νλ‘νΌν°λ μμ±νμ§ μλλ€.
- μμ μ λ°μΈλ©ν κ°μ²΄λ₯Ό κ°λ¦¬ν€λ λ΄λΆ μ¬λ‘― [[HomeObject]] λ₯Ό κ°λλ€ -> super ν€μλλ₯Ό μ¬μ©ν μ μλ€. (μ°Έμ‘° κ°λ₯)
π₯ 26.3 νμ΄ν ν¨μ
26.3.1 νμ΄ν ν¨μ μ μ
const μλ³μ = () => {}
νμ€μ ννμλ‘ μΈ μ μμΌλ©΄ return, {} μλ΅ κ°λ₯.
κ°μ²΄λ () λ‘ κ°μΈμ€μΌν¨.
26.3.2 νμ΄ν ν¨μμ μΌλ° ν¨μμ μ°¨μ΄
01. νμ΄ν ν¨μλ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ non-constructor λ€.
02. μ€λ³΅λ 맀κ°λ³μ μ΄λ¦μ μ μΈν μ μλ€.
(μΌλ° ν¨μλ 'strict mode' μμλ§ μ€λ³΅ λΆκ°)
03. νμ΄ν ν¨μλ ν¨μ μ체μ this, arguments, super, new, target λ°μΈλ©μ κ°μ§ μλλ€.
νμ΄ν ν¨μ λ΄λΆμμ μ°Έμ‘°μ -> μ€μ½ν 체μΈμ ν΅ν΄ μμ μ€μ½νμμ μ°Ύμ
26.3.3 this
κ°μ₯ ν° μ°¨μ΄.
ν΄λμ€ λ΄λΆ -> strict mode μ μ© -> μ΄λ° ν¨μλ‘μ νΈμΆλ λͺ¨λ ν¨μμ λ΄λΆ this μλ undefined κ° λ°μΈλ©λ¨.
2λ² μ½λ°± ν¨μμ this μ μΈλΆ ν¨μ this κ° μλ‘ λ€λ₯Έ κ°μ κ°μ§λ€.
1λ²μμ prefix.
"μ½λ°± ν¨μ λ΄λΆμ this λ¬Έμ "
=> νμ΄ν ν¨μλ‘ ν΄κ²° κ°λ₯.
νμ΄ν ν¨μλ ν¨μ μ체μ this λ°μΈλ©μ κ°μ§ μκΈ° λλ¬Έ. μμ μ€μ½νμ this λ₯Ό κ·Έλλ‘ μ°Έμ‘°ν¨.
=> "lexical this" λΌκ³ ν¨.
λ©μλλ₯Ό νμ΄ν ν¨μλ‘ μ μνλ κ²μ νΌν΄μΌν¨.
λ©μλμμ this.νλ‘νΌν°μ΄λ¦ μ¬μ©νλ©΄ -> μ¬μ©ν μ μμ. this λ°μΈλ©μ΄ μκΈ° λλ¬Έ.
26.3.4 super
super λ°μΈλ© κ°μ§ μμ. => μμ μ€μ½νμ super μ μ°Έμ‘°ν¨.
26.3.5 arguments
arguments λ°μΈλ© κ°μ§ μμ. => μμ μ€μ½νμ arguments μ°Έμ‘°ν¨.
π₯ 26.4 Rest νλΌλ―Έν°
26.4.1 κΈ°λ³Έ λ¬Έλ²
... rest
ν¨μμ μ λ¬λ μΈμλ€μ λͺ©λ‘μ λ°°μ΄λ‘ μ λ¬ λ°μ.
μΌλ° 맀κ°λ³μμ ν¨κ» μ¬μ© κ°λ₯, μ¬μ©μ 맨 λ€μ λ¬μΌν¨.
rest νλΌλ―Έν°λ λ¨ νλλ§ μ μΈν μ μμ.
length νλ‘νΌν°μ μν₯μ μ£Όμ§ μμ. (μΈμ§ μμ)
26.4.2 Rest νλΌλ―Έν°μ arguments κ°μ²΄
arguments κ°μ²΄
- ν¨μ νΈμΆ μ μ λ¬λ μΈμλ€μ μ 보λ₯Ό λ΄κ³ μλ μν κ°λ₯ν μ μ¬ λ°°μ΄ κ°μ²΄
- ν¨μ λ΄λΆμμ μ§μ λ³μμ²λΌ μ¬μ©ν μ μλ€.
- νμ§λ§ μ μ¬ λ°°μ΄ κ°μ²΄μ΄λ―λ‘ -> λ°°μ΄ λ©μλλ₯Ό μ¬μ©νλ €λ©΄ Function.call, Function.apply λ©μλλ₯Ό μ¬μ©ν΄ λ°°μ΄λ‘ λ³νν΄μΌν¨. (λ²κ±°λ‘μ)
-> rest λ‘ λ°μΌλ©΄ μ΄λ° λ²κ±°λ‘μμ νΌν μ μμ.
π₯ 26.5 맀κ°λ³μ κΈ°λ³Έκ°
ν¨μ νΈμΆ μ 맀κ°λ³μμ μΈμμ μκ° μΌμΉνλμ§ μ²΄ν¬νμ§ μμ.
=> λ§μ½ μμ μ undefined λ‘ μλ¬ λ°μ
=> λ°©μ΄ μ½λ νμ
κΈ°λ³Έκ°μ μ λ¬ν μ μμ.
κΈ°λ³Έ κ°μ κ°μ΄ μ λ¬νλ©΄
ν¨μ λ΄μμ μ¬μ©νλ μΈμ μ²΄ν¬ λ° μ΄κΈ°νλ₯Ό κ°μν ν μ μλ€.
κΈ°λ³Έκ°μ
- 맀κ°λ³μμ μΈμλ₯Ό μ λ¬νμ§ μμ κ²½μ°
- undefined λ₯Ό μ λ¬ν κ²½μ°
μλ§ μ ν¨νλ€.
rest νλΌλ―Έν°μλ κΈ°λ³Έκ° μ§μ ν μ μμ.
'λ μ λͺ©λ‘ > λͺ¨λ₯λ€ Modern JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λͺ¨λ₯λ€] 28μ₯ Number (0) | 2023.05.23 |
---|---|
[λͺ¨λ₯λ€] 27μ₯ λ°°μ΄ (0) | 2023.05.21 |
[λͺ¨λ₯λ€] 25μ₯ ν΄λμ€ (1) (0) | 2023.05.18 |
[λͺ¨λ₯λ€] 24μ₯ ν΄λ‘μ (0) | 2023.05.16 |
[λͺ¨λ₯λ€] 23μ₯ μ€ν 컨ν μ€νΈ (0) | 2023.05.16 |