diff --git "a/JAVASCRIPT/\353\202\250\354\235\200\354\227\264.md" "b/JAVASCRIPT/\353\202\250\354\235\200\354\227\264.md"
new file mode 100644
index 0000000..2881af3
--- /dev/null
+++ "b/JAVASCRIPT/\353\202\250\354\235\200\354\227\264.md"
@@ -0,0 +1,381 @@
+### π³ λͺ©μ°¨
+- [μ€ν컨ν
μ€νΈ](#μ€ν컨ν
μ€νΈ)
+ - μ€ν컨ν
μ€νΈλ?
+ - λ μ컬 νκ²½μ λνμ μΈ κ΅¬μ± μμ
+ - μλ³μ κ²°μ μ΄λ?
+ - μ€μ½ν 체μΈμ λμ μ리
+ - μμ€μ½λμ νκ³Όμ μ€ν κ³Όμ
+ - λ μ컬 νκ²½ vs λ μ컬 μ€μ½ν
+ - λ μ컬 μ€μ½νμ λμ μ€μ½νμ μ°¨μ΄λ?
+
+- [Closure](#closure)
+ - μλ°μ€ν¬λ¦½νΈμμμ μΌλ°μ μΈ ν΄λ‘μ Έλ?
+ - ν΄λ‘μ μ μ₯μ κ³Ό λ¨μ
+
+- [λ³μ](#λ³μ)
+ - λ³μ νΈμ΄μ€ν
+ - var, let, const
+ - TDZ(Temporal Dead Zone)μ΄λ?
+
+- [this](#this)
+ - thisλ?
+ - λ°μΈλ©μ΄λ?
+ - call, apply, bindμ μ°¨μ΄
+ - μλμ μΆλ ₯λλ κ°μ 무μμΈκ°μ? (λ²μΈ)
+ - λ¬Έμ κ° μλ€λ©΄ μ λ¬Έμ κ° λ°μνκ³ , ν΄κ²°νλ λ°©λ²μ 무μμΈκ°μ? (λ²μΈ)
+ - this λ°μΈλ©κ³Ό λ μ컬 μ€μ½νμ μ°¨μ΄μ μ?
+ - this λ°μΈλ© μ°μ μμ
+
+- [μλ£ν](#μλ£ν)
+ - μμ νμ
+ - κ°μ²΄ νμ
+ - λ°μ΄ν° νμ
μ λλλ μ΄μ λ 무μμΈκ°?
+
+- [μ°μ°μ](#μ°μ°μ)
+ - μ°μ μ°μ°μ
+ - λΉκ΅ μ°μ°μ
+ - μλ μ°μ°μ κ²°κ³Όλ 무μμΈκ°?
+
+---
+
+
+
+## π μ€ν컨ν
μ€νΈ
+
+### μ€ν컨ν
μ€νΈλ?
+
+μ€ν컨ν
μ€νΈλ μμ€μ½λλ₯Ό μ€ννλ λ° νμν νκ²½μ μ 곡νκ³ , μ½λμ μ€ν κ²°κ³Όλ₯Ό μ€μ λ‘ κ΄λ¦¬νλ μμμ΄λ€.
+
+JavaScriptμ μ€ν 컨ν
μ€νΈ(Execution Context)λ JavaScript μμ§μμ ꡬ문μ ν΄μνκ³ μ€ννλ λμ νμ©λλ λ©λͺ¨λ¦¬ 곡κ°μ
λλ€. μ€ν 컨ν
μ€νΈλ μ€μ½νμ ν¨κ» κ°κ°μ ν¨μ, λΈλ‘, μ μ μ½λμ λν νκ²½μ ꡬμ±νκ³ , μμ§μμ κ°κ°μ ꡬ문μ μ€νν μ μλλ‘ ν©λλ€.
+
+μ€ν 컨ν
μ€νΈλ μλ³μλ₯Ό λ±λ‘νκ³ κ΄λ¦¬νλ μ€μ½νμ μ½λ μ€ν μμ κ΄λ¦¬λ₯Ό ꡬνν λ΄λΆ 맀컀λμ¦μΌλ‘, λͺ¨λ μ½λλ μ€ν 컨ν
μ€νΈλ₯Ό ν΅ν΄ μ€νλκ³ κ΄λ¦¬λλ€.
+
+μλ³μμ μ€μ½νλ μ€ν 컨ν
μ€νΈμ λ μ컬 νκ²½μΌλ‘ κ΄λ¦¬νκ³ μ½λ μ€ν μμλ μ€ν 컨ν
μ€νΈ μ€νμΌλ‘ κ΄λ¦¬νλ€.
+
+JavaScript μμ§μ μ΅μ΄μ νλμ μ μ μ€ν 컨ν
μ€νΈλ₯Ό μμ±νκ³ , ν¨μλ₯Ό νΈμΆν λλ§λ€ μλ‘μ΄ μ€ν 컨ν
μ€νΈκ° μμ±λ©λλ€. κ° μ€ν 컨ν
μ€νΈλ ν λΉλ λ³μμ ν¨μ κ°μ²΄λ₯Ό ν¬ν¨νμ¬, μμ§μμ μΈμ λ μ§ μ κ·Όν μ μλλ‘ ν©λλ€. μ€νμ΄ λλ νμλ μ€ν 컨ν
μ€νΈλ μ κ±°λλ©°, λ©λͺ¨λ¦¬μμ μ κ±°λ©λλ€.
+
+### λ μ컬 νκ²½μ λνμ μΈ κ΅¬μ± μμ
+
+1. νκ²½ λ μ½λ (Environment Record)
+
+ μ€μ½νμ ν¬ν¨λ μλ³μλ₯Ό λ±λ‘νκ³ λ±λ‘λ μλ³μμ λ°μΈλ©λ κ°μ κ΄λ¦¬νλ μ μ₯μ. νκ²½ λ μ½λλ μμ€μ½λμ νμ
μ λ°λΌ κ΄λ¦¬νλ λ΄μ©μ΄ μ°¨μ΄κ° μλ€.
+
+2. μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°(Outer Lexical Environment Reference)
+
+ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ μμ μ€μ½νλ₯Ό κ°λ¦¬ν¨λ€. μ΄λ μμ μ€μ½νλ μΈλΆ λ μ컬 νκ²½, μ¦ ν΄λΉ μ€ν 컨ν
μ€νΈλ₯Ό μμ±ν μμ€μ½λλ₯Ό ν¬ν¨νλ μμ μ½λμ λ μ컬 νκ²½μ μλ―Έ. μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ₯Ό ν΅ν΄ λ¨λ°©ν₯ λ§ν¬λ 리μ€νΈμΈ μ€μ½ν 체μΈμ ꡬννλ€.
+
+### μλ³μ κ²°μ μ΄λ?
+
+λμΌν μ΄λ¦μ μλ³μκ° λ€λ₯Έ μ€μ½νμ μ¬λ¬ κ° μ‘΄μ¬ν μλ μλ€. λ°λΌμ μ΄λ μ€μ½νμ μλ³μλ₯Ό μ°Έμ‘°νλ©΄ λλμ§ κ²°μ ν νμκ° μλλ°, μ΄κ²μ μλ³μ κ²°μ μ΄λΌ νλ€. μλ³μ κ²°μ μ μν΄ μλ³μλ₯Ό κ²μν λλ μ€ν μ€μΈ μ€ν 컨ν
μ€νΈμμ μλ³μλ₯Ό κ²μνκΈ° μμνλ€. λ§μ½ μ€ν μ€μΈ μ€ν 컨ν
μ€νΈμ λ μ컬 νκ²½μμ μλ³μλ₯Ό κ²μν μ μμΌλ©΄ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°κ° κ°λ¦¬ν€λ λ μ컬 νκ²½, μ¦ μμ μ€ν¬ν¬λ‘ μ΄λνμ¬ μλ³μλ₯Ό κ²μνλ€.
+
+### μ€μ½ν 체μΈμ λμ μ리
+
+νμ¬ μ€ν μ€μΈ μ€ν 컨ν
μ€νΈμ λ μ컬 νκ²½μμ μλ³μλ₯Ό κ²μν μ μμΌλ©΄ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°κ° κ°λ¦¬ν€λ λ μ컬 νκ²½, μ¦ μμ μ€μ½νλ‘ μ΄λνμ¬ μλ³μλ₯Ό κ²μνλ κ².
+
+### μμ€μ½λμ νκ³Όμ μ€ν κ³Όμ
+
+μμ€μ½λ νκ° κ³Όμ μμλ μ€ν 컨ν
μ€νΈλ₯Ό μμ±νκ³ λ³μ, ν¨μ λ±μ μ μΈλ¬Έλ§ λ¨Όμ μ€ννμ¬ μμ±λ λ³μλ ν¨μ μλ³μλ₯Ό ν€λ‘ μ€ν 컨ν
μ€νΈκ° κ΄λ¦¬νλ μ€μ½ν(λ μ컬 νκ²½μ νκ²½ λ μ½λ)μ λ±λ‘νλ€. μμ€μ½λ νκ° κ³Όμ μ΄ λλλ©΄ λΉλ‘μ μ μΈλ¬Έμ μ μΈν μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλκΈ° μμνλ€. μ΄λ μμ€μ½λ μ€νμ νμν μ 보, μ¦ λ³μλ ν¨μμ μ°Έμ‘°λ₯Ό μ€ν 컨ν
μ€νΈκ° κ΄λ¦¬νλ μ€μ½νμμ κ²μν΄μ μ·¨λνλ€. κ·Έλ¦¬κ³ λ³μ κ°μ λ³κ²½ λ± μμ€μ½λμ μ€ν κ²°κ³Όλ λ€μ μ€ν 컨ν
μ€νΈκ° κ΄λ¦¬νλ μ€μ½νμ λ±λ‘νλ€.
+
+### λ μ컬 νκ²½ vs λ μ컬 μ€μ½ν
+
+λ μ컬 νκ²½μ μ½λκ° μ€νλ λ, μ΄λ€ λ³μμ ν¨μκ° μ μλμ΄ μλμ§λ₯Ό κΈ°μ΅νλ κ°μ²΄μ΄λ€. λ μ컬 νκ²½μ μΈμ λ μ§ μ½λμμ μ κ·Ό κ°λ₯ν λ³μμ ν¨μμ λͺ©λ‘μ μ 곡νλ€.
+
+λ μ컬 μ€μ½νλ λ μ컬 νκ²½μμ λ³μμ ν¨μμ λν μ κ·Ό κΆνμ μ μνλ€. μ€μ½νλ λ³μμ ν¨μμ μ κ·Όν μ μλ μμμ κ²°μ νλ©°, μ€μ½νλ λ³μμ ν¨μμ μ ν¨ λ²μλ₯Ό κ²°μ νλ€. μλ°μ€ν¬λ¦½νΈμμ μ€μ½νλ ν¨μλ₯Ό μ΄λμ βμ μΈβ νμλμ§μ λ°λΌ κ²°μ λλ€.
+
+μ¦, λ μ컬 νκ²½μ λ³μμ ν¨μμ λͺ©λ‘μ μ 곡νκ³ , λ μ컬 μ€μ½νλ μ΄λ€ λ³μμ ν¨μμ μ κ·Όν μ μλμ§λ₯Ό κ²°μ νλ€. λ κ°μ κ°λ
μ μλ‘ μ°κ΄λμ΄ μμ§λ§, λ€λ₯Έ ν° κ°λ
μ κ°μ§κ³ μλ€.
+
+μ΄λ₯Ό ꡬνν κ²μ΄ βμ€ν 컨ν
μ€νΈβμ΄λ©°, μ½λ μ½λλ μ€ν 컨ν
μ€νΈμμ νκ°λκ³ μ€νλλ€.
+
+### λ μ컬 μ€μ½νμ λμ μ€μ½νμ μ°¨μ΄λ?
+
+μμ μ€μ½νλ₯Ό κ²°μ νλ λ°©λ²μΌλ‘ ν¨μλ₯Ό μ΄λμ βνΈμΆβ νμλκ°μ ν¨μλ₯Ό μ΄λμ βμ μΈβνλ κ° λ κ°μ§ ν¨ν΄μ΄ μ‘΄μ¬νλλ°, 첫 λ²μ§Έ λ°©μμ λμ μ€μ½ν, λ λ²μ§Έ λ°©μμ λ μ컬 μ€μ½νλΌκ³ νλ€.
+
+
+
+## π Closure
+
+### Closureλ?
+
+JavaScriptμ Closureλ ν¨μμ κ·Έ ν¨μκ° μ μΈλ μ€μ½ν μ¬μ΄μμ μμ±λ νΉμν κ΄κ³λ₯Ό λ§ν©λλ€. Closureλ ν¨μκ° μ μλ λ κ·Έ μ€μ½νμ μλ λͺ¨λ λ³μμ ν¨μμ λν μ κ·Ό κΆνμ κ°λ ν¨μλ₯Ό μμ±ν©λλ€.
+
+μ¦, Closureλ ν¨μκ° μ μΈλ μ€μ½νμμ μ μλ λ³μμ μ‘μΈμ€ ν μ μλ ν¨μλ₯Ό μλ―Έν©λλ€. Closureλ μ€μ½ν 체μΈμμ μ μλ λ³μλ₯Ό "κΈ°μ΅"νκ³ , κ·Έ λ³μλ₯Ό κ°μ§κ³ μλ ν¨μκ° μΈμ λ μ§ μ¬μ© κ°λ₯νκ² ν©λλ€.
+
+Closuresλ₯Ό μ¬μ©νλ©΄ μ€μ½νμμ μ μλ λ³μλ₯Ό μ¨κΈΈ μ μκ³ (μ 보μλ), μλ‘μ΄ κ³΅κ°μ λ§λ€μ΄ λ³μμ ν¨μμ μ κ·Όμ μ ν(μΊ‘μν)ν μ μμ΅λλ€. Closureλ μμ£Ό λ€λ₯Έ κ°μ²΄μ ν¨κ» μ¬μ©λμ΄ κ°μ²΄μ λ΄λΆμ μΈ μνλ₯Ό μ μ§νλλ° μ¬μ©λ©λλ€.
+
+### μλ°μ€ν¬λ¦½νΈμμμ μΌλ°μ μΈ ν΄λ‘μ Έλ?
+
+μ€μ²© ν¨μμ μμ μ€μ½νμ μλ³μλ₯Ό μ°Έμ‘°νκ³ μκ³ μ€μ²© ν¨μκ° μΈλΆ ν¨μλ³΄λ€ λ μ€λ μ μ§λλ κ²½μ°μ νμ νλ κ²
+
+### ν΄λ‘μ μ μ₯μ κ³Ό λ¨μ
+
+μ₯μ : μνκ° μλμΉ μκ² λ³κ²½λμ§ μλλ‘ μμ νκ² μλνκ³ νΉμ ν¨μμκ²λ§ μν λ³κ²½μ νμ©νμ¬ μνλ₯Ό μμ νκ² λ³κ²½νκ³ μ μ§νκΈ° μν΄ μ¬μ©νλ€.
+
+λ¨μ : λ©λͺ¨λ¦¬λ₯Ό μλͺ¨νλ€. outerμ inner ν¨μμ κ²½μ° outer ν¨μκ° μ’
λ£λμμμλ inner ν¨μκ° μ’
λ£λ λκΉμ§ λ©λͺ¨λ¦¬μμ ν΄μ§λμ§ μκ³ μκΈ° λλ¬Έ.
+
+
+
+## π λ³μ
+
+### λ³μ νΈμ΄μ€ν
+
+λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ μ νΉμ§μ λ³μ νΈμ΄μ€ν
μ΄λΌνλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ΄ μμ€μ½λμ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ λ¨Όμ μ€ννλ€. μμ€μ½λμ νκ° κ³Όμ μμ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έμ μμ€μ½λμμ μ°Ύμλ΄ λ¨Όμ μ€ννλ€. λ°λΌμ λ³μ μ μΈμ΄ μμ€μ½λμ μ΄λμ μμΉνλμ§μ μκ΄μμ΄ μ΄λμλ μ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
+
+μ¬μ€ λ³μ μ μΈλΏ μλλΌ var, let, const, function, function\*, class ν€μλλ₯Ό μ¬μ©ν΄μ μ μΈνλ λͺ¨λ μλ³μλ νΈμ΄μ€ν
λλ€. λͺ¨λ μ μΈλ¬Έμ λ°νμ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€.
+
+### var, let, const
+
+var, let constλ JavaScriptμ λ³μλ₯Ό μ μΈνλ ν€μλμ΄λ€. μΈ ν€μλμ μ°¨μ΄μ μ λ€μκ³Ό κ°λ€.
+
+1. var
+ - ES6 μ΄μ λ²μ μμ μ¬μ©λλ λ³μ μ μΈ λ°©μ
+ - ν¨μ μ€μ½νλ₯Ό κ°μ§λ€.
+ - λ³μ μ¬μ μΈκ³Ό μ¬ν λΉμ΄ κ°λ₯νλ€.
+ - λ³μ νΈμ΄μ€ν
μ΄ λ°μνλ€.
+2. let
+ - ES6μμ λμ
λμ΄ λΈλ‘ μ€μ½νλ₯Ό κ°μ§λ€.
+ - λ³μ μ¬μ μΈμ΄ λΆκ°λ₯νλ€.
+ - νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ² μ²λΌ λμνλ€.
+ - μ¬ν λΉμ΄ κ°λ₯νλ€.
+3. const
+ - ES6μμ λμ
λ μμ μ μΈ λ°©μμ΄λ€.
+ - λΈλ‘ μ€μ½νλ₯Ό κ°μ§λ€.
+ - λ³μ κ°μ΄ λ³νμ§ μλλ€.
+ - λ³μ μ¬μ μΈμ΄ λΆκ°λ₯νλ€.
+ - νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ² μ²λΌ λμνλ€.
+
+### TDZ(Temporal Dead Zone)μ΄λ?
+
+TDZλ let, const ν€μλλ₯Ό μ¬μ©νμ¬ λ³μλ₯Ό μ μΈνμμ λ, ν΄λΉ λ³μκ° μ μΈλκΈ° μ μ μ κ·Όνλ €κ³ ν λ λ°μνλ νμμ΄λ€.
+
+TDZλ λ³μκ° μ μΈλ μμΉμμλΆν° λ³μκ° μ΄κΈ°νλ λκΉμ§μ ꡬκ°μ μλ―Ένλ€. μ¦, λ³μκ° μ μΈλμμ§λ§ μ΄κΈ°νλκΈ° μ κΉμ§λ λ³μλ₯Ό μ¬μ©ν μ μλ€. μ΄ κ΅¬κ°μμ λ³μμ μ κ·Όνλ©΄ βReferenceErrorβ μ€λ₯κ° λ°μνλ€.
+
+TDZλ let, const ν€μλλ₯Ό μ¬μ©νλ λ³μμλ§ μ μ©λλ©°, var ν€μλλ₯Ό μ¬μ©νλ λ³μλ μμ€μ½λ νκ° λ¨κ³μμ μ΄κΈ°νκ° μ§νλμ΄ undefinedκ° ν λΉλκΈ° λλ¬Έμ μ€λ₯κ° λ°μνμ§ μλλ€.
+
+TDZλ λ³μμ μ€μ½νλ₯Ό λͺ
ννκ² νκΈ° μν΄ λμ
λ κ°λ
μΌλ‘, λ³μκ° μ μΈλμ§ μμ μνμμ μ¬μ©λ κ²½μ° μλ¬λ₯Ό λ°μμμΌ νλ‘κ·Έλ¨μ μμ μ±μ λμ΄λ μν μ νλ€.
+
+
+
+## π This
+
+### thisλ?
+
+JavaScriptμμ thisλ νμ¬ μ€ν 컨ν
μ€νΈμ 주체λ₯Ό λνλ΄λ μμ½μ΄μ΄λ€. ν¨μλ λ©μλ λ΄λΆμμ this ν€μλλ₯Ό μ¬μ©νλ©΄, ν΄λΉ ν¨μλ₯Ό νΈμΆν κ°μ²΄μ λν μ°Έμ‘°λ₯Ό κ°λ₯΄ν¨λ€. thisλ μ€ν 컨ν
μ€νΈμ λ°λΌ μ°Έμ‘°νλ κ°μ²΄κ° λ¬λΌμ§κΈ° λλ¬Έμ, thisμ κ°μ λμ μΌλ‘ κ²°μ λλ€.
+
+μΌλ°μ μΌλ‘, ν¨μλ₯Ό μ μ μ€μ½νμμ νΈμΆνλ©΄ thisλ μ μ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. νμ§λ§, ν¨μλ₯Ό κ°μ²΄μ λ©μλλ‘ νΈμΆνλ©΄, thisλ ν΄λΉ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. λν, ν¨μλ₯Ό μμ±μλ‘ νΈμΆνλ©΄ thisλ μλ‘ μμ±λλ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. κ·Έλ¦¬κ³ call, apply, bind λ©μλλ₯Ό ν΅ν΄ 첫 λ²μ§Έ μΈμμ thisλ₯Ό μ§μ ν λΉν΄μ€ μ μλ€.
+
+ES6μμλ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ©΄, thisκ° ν¨μλ₯Ό μ μν μ€μ½νμ thisμ κ°μμ§κΈ° λλ¬Έμ, this λ°μΈλ©μ λμμ΄ μΌλ° ν¨μμ λ€λ₯΄λ€. νμ΄ν ν¨μμμ thisλ₯Ό μ¬μ©νλ©΄, ν΄λΉ ν¨μλ₯Ό μ μν μ€μ½νμ this κ°μ μ°Έμ‘°νκ² λλ€.
+
+### λ°μΈλ©μ΄λ?
+
+μλ³μμ κ°μ μ°κ²°νλ κ³Όμ μ μλ―Ένλ€. μλ₯Ό λ€μ΄, λ³μ μ μΈμ λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό λ°μΈλ©νλ κ²μ΄λ€. this λ°μΈλ©μ this(ν€μλλ‘ λΆλ₯λμ§λ§ μλ³μ μν μ νλ€)μ thisκ° κ°λ¦¬ν¬ κ°μ²΄λ₯Ό λ°μΈλ©νλ κ²μ΄λ€.
+
+### call, apply, bindμ μ°¨μ΄
+
+call, apply, bindλ μλ°μ€ν¬λ¦½νΈμμ ν¨μμ μ€ν 컨ν
μ€νΈλ₯Ό λ³κ²½νλ λ°©λ²μ μ 곡νλ λ©μλμ΄λ€. ν¨μλ₯Ό νΈμΆν λ, thisμ κ°μ μ§μ ν μ μλ€.
+
+1. call
+
+ call λ©μλμ 첫 λ²μ§Έ μΈμλ ν¨μ λ΄λΆμμ thisλ‘ μ°Έμ‘°ν κ°μ²΄λ₯Ό μλ―Ένλ©°, λ λ²μ§Έ μ΄νμ μΈμλ€μ ν¨μμ λ§€κ°λ³μλ‘ μ λ¬λλ€.
+
+2. apply
+
+ callκ³Ό λ¬λ¦¬ λ λ²μ§Έ μΈμλ‘ λ°°μ΄μ λ°μΌλ©°, μ΄ λ°°μ΄μ ν¨μμ λ§€κ°λ³μλ‘ μ λ¬λλ€.
+
+3. bind
+
+ ν¨μλ₯Ό νΈμΆν λ thisμ κ°μ μꡬμ μΌλ‘ μ§μ ν μ μλ€. bind λ©μλλ μλ‘μ΄ ν¨μλ₯Ό λ°ννλ©°, μ΄ ν¨μλ₯Ό νΈμΆνλ©΄ νμ μ§μ ν this κ°μ κ°μ§κ² λλ€.
+
+### μλμ μΆλ ₯λλ κ°μ 무μμΈκ°μ?
+
+```jsx
+let user = {
+ firstName: "John",
+ sayHi() {
+ alert(`Hello, ${this.firstName}!`);
+ },
+};
+
+setTimeout(user.sayHi, 1000);
+```
+
+### λ¬Έμ κ° μλ€λ©΄ μ λ¬Έμ κ° λ°μνκ³ , ν΄κ²°νλ λ°©λ²μ 무μμΈκ°μ?
+
+setTimeoutμ κ°μ²΄μμ λΆλ¦¬λ ν¨μμΈ user.sayHiκ° μ λ¬λκΈ° λλ¬Έμ΄λ€.
+
+μ½λ°±ν¨μλ‘ λκΈ΄ ν¨μμ thisμλ windowκ° ν λΉμ΄ λλ―λ‘, window κ°μ²΄μλ firstNameμ΄λΌλ κ°μ΄ μκΈ° λλ¬Έμ `undefined`κ° λνλλ€.
+
+μ΄λ₯Ό ν΄κ²°νκΈ° μν λ°©λ²
+
+1. λνΌ ν¨μ μ¬μ©
+
+ ```jsx
+ setTimeout(function () {
+ user.sayHi(); // Hello, John!
+ }, 1000);
+ ```
+
+ μΈλΆ λ μ컬 νκ²½μμ userλ₯Ό λ°μμ λ³΄ν΅ λμ²λΌ λ©μλλ₯Ό νΈμΆνκΈ° λλ¬Έ
+
+ ```jsx
+ setTimeout(() => user.sayHi(), 1000); // λμΌ
+ ```
+
+ νμ§λ§ userκ° λ³κ²½μ΄ λλ©΄, λ³κ²½λ κ°μ²΄μ λ©μλλ₯Ό νΈμΆνκ² λλ λ¬Έμ κ° λ°μ
+
+ ```jsx
+ let user = {
+ firstName: "John",
+ sayHi() {
+ alert(`Hello, ${this.firstName}!`);
+ },
+ };
+
+ setTimeout(() => user.sayHi(), 1000);
+
+ // 1μ΄κ° μ§λκΈ° μ μ userμ κ°μ΄ λ°λ
+ user = {
+ sayHi() {
+ alert("λ λ€λ₯Έ μ¬μ©μ!");
+ },
+ };
+
+ // setTimeoutμ λ λ€λ₯Έ μ¬μ©μ!
+ ```
+
+2. bind
+
+ ```jsx
+ let user = {
+ firstName: "John",
+ sayHi() {
+ alert(`Hello, ${this.firstName}!`);
+ },
+ };
+
+ let sayHi = user.sayHi.bind(user); // (*)
+
+ // μ΄μ κ°μ²΄ μμ΄λ κ°μ²΄ λ©μλλ₯Ό νΈμΆν μ μμ΅λλ€.
+ sayHi(); // Hello, John!
+
+ setTimeout(sayHi, 1000); // Hello, John!
+
+ // 1μ΄ μ΄λ΄μ user κ°μ΄ λ³νν΄λ
+ // sayHiλ κΈ°μ‘΄ κ°μ μ¬μ©ν©λλ€.
+ user = {
+ sayHi() {
+ alert("λ λ€λ₯Έ μ¬μ©μ!");
+ },
+ };
+ ```
+
+### this λ°μΈλ©κ³Ό λ μ컬 μ€μ½νμ μ°¨μ΄μ μ?
+
+λ μ컬 μ€μ½νμ this λ°μΈλ©μ κ²°μ μκΈ°κ° λ€λ₯΄λ€. ν¨μμ μμ μ€μ½νλ₯Ό κ²°μ νλ λ°©μμΈ λ μ컬 μ€μ½νλ ν¨μ μ μκ° νκ°λμ΄ ν¨μ κ°μ²΄κ° μμ±λλ μμ μ μμ μ€μ½νλ₯Ό κ²°μ νλ€. νμ§λ§ this λ°μΈλ©μ ν¨μ νΈμΆ μκΈ°μ κ²°μ λλ€.
+
+### this λ°μΈλ© μ°μ μμ
+
+JavaScriptμμ `this`λ ν¨μκ° μ€νλ λ κ²°μ λλ κ°μΌλ‘, ν¨μκ° νΈμΆλλ λ°©μμ λ°λΌ `this`κ° μ°Έμ‘°νλ κ°μ²΄κ° κ²°μ λ©λλ€. μ΄λ `this`μ λ°μΈλ© μ°μ μμλ λ€μκ³Ό κ°μ΅λλ€.
+
+1. new λ°μΈλ©
+ - μμ±μ ν¨μλ₯Ό μ¬μ©νμ¬ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±ν λ `this`λ μλ‘ μμ±λ κ°μ²΄λ₯Ό μ°Έμ‘°ν©λλ€.
+2. λͺ
μμ λ°μΈλ© (Explicit binding)
+ - **`call`**, **`apply`**, **`bind`** λ©μλλ₯Ό μ¬μ©νμ¬ `this`λ₯Ό λͺ
μμ μΌλ‘ μ§μ ν μ μμ΅λλ€.
+3. μμμ λ°μΈλ© (Implicit binding)
+ - κ°μ²΄μ λ©μλλ₯Ό νΈμΆν λ, ν΄λΉ λ©μλκ° μν΄μλ κ°μ²΄κ° `this`λ₯Ό μ°Έμ‘°ν©λλ€.
+4. κΈ°λ³Έ λ°μΈλ© (Default binding)
+ - μ μ μ€ν 컨ν
μ€νΈμμ `this`λ μ μ κ°μ²΄λ₯Ό μ°Έμ‘°νλ©°, strict modeμμλ `undefined`λ₯Ό λ°νν©λλ€.
+
+λ§μ½ μ 쑰건μ λ§λ λ°μΈλ©μ΄ μλ κ²½μ°, `this`λ undefinedκ° λ©λλ€.
+
+**`new`** λ°μΈλ©, λͺ
μμ λ°μΈλ©, μμμ λ°μΈλ©, κΈ°λ³Έ λ°μΈλ©μ λͺ¨λ μ°μ μμλ₯Ό κ°μ§λ©°, λ°μΈλ©μ΄ κ²ΉμΉλ κ²½μ° μ°μ μμκ° λμ λ°μΈλ©μ΄ μ μ©λ©λλ€. μλ₯Ό λ€μ΄, **`call`** λλ **`apply`** λ©μλλ₯Ό μ¬μ©ν΄ λͺ
μμ μΌλ‘ `this`λ₯Ό μ§μ ν κ²½μ°, μμμ λ°μΈλ©λ³΄λ€ μ°μ μμκ° λμ΅λλ€. νμ§λ§ `new` λ°μΈλ©μ΄ μ μ©λ κ²½μ°, λͺ¨λ λ°μΈλ©λ³΄λ€ μ°μ μμκ° κ°μ₯ λμ΅λλ€.
+
+λ°λΌμ, `this`μ κ°μ΄ μ΄λ»κ² κ²°μ λλμ§ μ΄ν΄νκ³ μ°μ μμλ₯Ό νμ
νμ¬ μ μ ν λ°μΈλ© λ°©μμ μ ννλ κ²μ΄ μ€μν©λλ€.
+
+
+
+## π μλ£ν
+
+JavaScriptμ μλ£νμ ν¬κ² μμ νμ
κ³Ό κ°μ²΄ νμ
λ κ°μ§λ‘ λλλ€
+
+### μμ νμ
+
+μμ νμ
μ κ°μ μ§μ μ μ₯νκ³ μ°Έμ‘°νλ νμ
μΌλ‘, λ€μκ³Ό κ°μ 6κ°μ§ νμ
μ΄ μλ€.
+
+- number: μ«μ
+- string: λ¬Έμμ΄
+- boolean: λ
Όλ¦¬κ° (μ°Έ, κ±°μ§)
+- null: κ°μ΄ μμμ λνλ΄λ νΉλ³ν νμ
+- undefined: κ°μ΄ ν λΉλμ§ μμμ λνλ΄λ νΉλ³ν νμ
+- symbol: μ μΌνκ³ λ³κ²½ λΆκ°λ₯ν κ°
+
+μμ νμ
μ λ³μμ μ§μ κ°μ ν λΉνλ―λ‘, λ³μλΌλ¦¬μ μ°μ°μμ κ° μμ²΄κ° λΉκ΅λλ€. μ΄λ₯Ό κ° λΉκ΅(value comparison)λΌκ³ νλ€.
+
+### κ°μ²΄ νμ
+
+κ°μ²΄ νμ
μ μ¬λ¬ κ°μ κ°μ νλμ λ³μμ μ μ₯νλ νμ
μ΄λ€. κ°μ²΄λ λ€μν λ°μ΄ν° νμ
μ ν¬ν¨ν μ μμΌλ©°, κ°μ²΄ νμ
μ λ³μλ κ°μ²΄μ μ°Έμ‘°κ°(reference)μ μ μ₯νλ€. κ°μ²΄ νμ
μλ λ€μκ³Ό κ°μ νμ
μ΄ μ.
+
+- object: μΌλ°μ μΈ κ°μ²΄
+- array: λ°°μ΄
+- function: ν¨μ
+- date: λ μ§
+- λ±
+
+κ°μ²΄ νμ
μ μ°Έμ‘°κ°μ μ μ₯νλ―λ‘, λ³μλΌλ¦¬μ μ°μ°μμ μ°Έμ‘°κ°μ΄ λΉκ΅λλ€. μ΄λ₯Ό μ°Έμ‘° λΉκ΅(reference comparison)λΌκ³ νλ€.
+
+JavaScriptμ μλ£νμ λμ μΌλ‘ κ²°μ λλ€. μ¦, λ³μμ ν λΉλλ κ°μ λ°λΌ μλμΌλ‘ νμ
μ΄ κ²°μ λλ€. μ΄λ¬ν νΉμ§ λλ¬Έμ JavaScriptλ μμ λ‘μ΄ νμ
λ³ν(free-type conversion)μ μ§μνλ©°, μ΄λ₯Ό μ΄μ©ν΄ λ€μν μ°μ°μ μνν μ μλ€.
+
+### λ°μ΄ν° νμ
μ λλλ μ΄μ λ 무μμΈκ°?
+
+1. κ°μ μ μ₯ν λ ν보ν΄μΌνλ λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄
+2. κ°μ μ°Έμ‘°ν λ ν λ²μ μ½μ΄ λ€μ¬μΌ ν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄
+3. λ©λͺ¨λ¦¬μμ μ½μ΄ λ€μΈ 2μ§μλ₯Ό μ΄λ»κ² ν΄μν μ§ κ²°μ νκΈ° μν΄
+
+
+
+## π μ°μ°μ
+
+### μ°μ μ°μ°μ
+
+νΌμ°μ°μλ₯Ό λμμΌλ‘ μνμ κ³μ°μ μνν΄ μλ‘μ΄ μ«μ κ°μ λ§λ λ€. μ°μ μ°μ°μ΄ λΆκ°λ₯ν κ²½μ°, NaNμ λ°ννλ€.
+
+1. μ΄ν μ°μ μ°μ°μ
+
+ μΈμ λ μλ‘μ΄ κ°μ λ§λ€ λΏ
+
+2. λ¨ν μ°μ μ°μ°μ
+
+ μ¦κ°/κ°μ(++/β) μ°μ°μλ νΌμ°μ°μμ κ°μ λ³κ²½νλ λΆμ ν¨κ³Ό λ°μ, νΌμ°μ°μμ κ°μ λ³κ²½νλ μ묡μ ν λΉ
+
+ μ«μ νμ
μ΄ μλ νΌμ°μ°μμ + λ¨ν μ°μ°μλ₯Ό μ¬μ©νλ©΄ νΌμ°μ°μλ₯Ό μ«μ νμ
μΌλ‘ λ³ννμ¬ λ°ννλ€. νΌμ°μ°μλ₯Ό λ³κ²½νλ κ²μ μλκ³ μ«μ νμ
μΌλ‘ λ³νν κ°μ μμ±ν΄μ λ°ννλ€.
+
+3. λ¬Έμμ΄ μ°κ²° μ°μ°μ
+
+ - μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄μΈ κ²½μ° λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμνλ€.
+
+ μ묡μ νμ
λ³ν λλ νμ
κ°μ λ³ν λ°μ
+
+### λΉκ΅ μ°μ°μ
+
+- λλ±/μΌμΉ λΉκ΅ μ°μ°μ
+ - λλ± λΉκ΅ μ°μ°μ: λμ¨ν λΉκ΅
+ - μΌμΉ λΉκ΅ μ°μ°μ: μ격ν λΉκ΅
+ λλ± λΉκ΅ μ°μ°μλ μ’νκ³Ό μ°νμ νΌμ°μ°μλ₯Ό λΉκ΅ν λ λ¨Όμ μ묡μ νμ
λ³νμ ν΅ν΄ νμ
μ μΌμΉμν¨ ν κ°μ κ°μΈμ§ λΉκ΅νλ€.
+
+### μλ μ°μ°μ κ²°κ³Όλ 무μμΈκ°?
+
+```jsx
+// λλ± λΉκ΅. κ²°κ³Όλ₯Ό μμΈ‘νκΈ° μ΄λ ΅λ€.
+"0" == ""; // ξ‘ false
+0 == ""; // ξ‘ true
+0 == "0"; //ξ‘true
+false == "false"; // false
+false == "0"; // true
+false == null; // false
+false == undefined; // ξ‘ false
+```
+
+```jsx
+NaN === NaN; // false
+0 === -0; // true
+0 == -0; //true
+```