πΈ11μ₯. μμ κ°κ³Ό κ°μ²΄μ λΉκ΅
μλ°μ€ν¬λ¦½νΈκ° μ 곡νλ 7κ°μ§ λ°μ΄ν° νμ (μ«μ, λ¬Έμμ΄, λΆλ¦¬μΈ, null, undefined, μ¬λ², κ°μ²΄ νμ )μ ν¬κ²
μμ νμ (primitive type)κ³Όκ°μ²΄ νμ (object/reference type)μΌλ‘ ꡬλΆν μ μλ€. (6μ₯)
β
11.1 μμ νμ
κ³Ό κ°μ²΄ νμ
μ λνμ μΈ μ°¨μ΄μ
μμ νμ μ κ°(==
μμ κ°)μλ³κ²½ λΆκ°λ₯ν κ°(immutable value)κ°μ²΄(μ°Έμ‘°) νμ μ κ°(==
κ°μ²΄)μλ³κ²½ κ°λ₯ν κ°(mutable value)μμκ°μ λ³μμ ν λΉνλ©΄
λ³μμλ μ€μ κ°μ΄ μ μ₯λλ€.κ°μ²΄λ₯Ό λ³μμ ν λΉνλ©΄
λ³μμλ μ°Έμ‘° κ°μ΄ μ μ₯λλ€.μμκ°μ κ°λ λ³μλ₯Ό λ€λ₯Έ λ³μμ ν λΉνλ©΄ β μμ κ°μ΄ 볡μ¬λμ΄ μ λ¬(
κ°μ μν μ λ¬. pass by value)κ°μ²΄λ₯Ό κ°λ¦¬ν€λ λ³μλ₯Ό λ€λ₯Έ λ³μμ ν λΉνλ©΄ β μλ³Έμ μ°Έμ‘°κ°μ΄ 볡μ¬λμ΄ μ λ¬(
μ°Έμ‘°μ μν μ λ¬. pass by reference)
β
11.2 μμ κ°
λ³κ²½ λΆκ°λ₯ν κ°
μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ° == μ½κΈ° μ μ© κ°μ΄λ€.κ°μ λ³κ²½ν μ μλ€λ μλ―Έ μ΄ν΄λ³΄κΈ°
λ³μλ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° κ·Έ μ체/λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν μ΄λ¦μ΄κ³κ°μ λ³μμ μ μ₯λ λ°μ΄ν°λ‘μ ννμμ΄ νκ°λμ΄ μμ±λ κ²°κ³Όλ°λΌμ, λ³κ²½ λΆκ°λ₯νλ€λ κ²μ λ³μκ° μλλΌ
κ°μ λν μ§μμ΄λ€.μ¦, "μμ κ°μ λ³κ²½ λΆκ°λ₯νλ€."
μμ κ° μ체λ₯Ό λ³κ²½ν μ μλ€. β Oλ³μ κ°μ λ³κ²½ν μ μλ€. β X
μλλ score λ³μκ° μ μΈλκ³ ν λΉ λ ν κ°μ΄ λ³κ²½λλ κ³Όμ μ λν κ·Έλ¦Όμ΄λ€.
μμ κ° numberλ immutableν κ°
λ°λΌμ, scoreλ κ° 80μ 90μΌλ‘ λ³κ²½νλ κ²μ΄ μλλΌ 90μ΄λΌλ μ«μλ‘ μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉν ν λ³μκ° κ°λ¦¬ν€λ κ³΅κ° κ°μ λ°κΏμ€λ€.
λ¬Έμμ΄κ³Ό λΆλ³μ±
λ¬Έμμ΄μ ꡬμ±λ λ¬Έμμ κ°μμ λ°λΌ νμν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°κ° λ€λ₯΄λ€.
λ¬Έμμ΄μ
μ μ¬ λ°°μ΄ κ°μ²΄μ΄λ©΄μμ΄ν°λ¬λΈμ΄λ€. λ°λΌμ λ°°μ΄κ³Ό μ μ¬νκ² μ κ·Όν μ μλ€.
λ¬Έμμ΄μ ν λ¬Έμλ₯Ό λ³κ²½ν΄ 보면?
'string' μμ 첫 λ²μ§Έ 's' λ₯Ό 'S' λ‘ λ³κ²½νλ € νμ§λ§ str λ³μλ "λ¬Έμμ΄, μ¦ μμ κ°"
μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°(immutable value) -> κ°μ΄ μ λ°μ΄νΈ λμ§ μλλ€.
μ°Έκ³ λ‘ μλ¬λ λ°μνμ§ μλλ€.
νμ§λ§ μλμ²λΌ μ¬ν λΉμΌλ‘ κ°μ λ³κ²½νλ κ²μ κ°λ₯νλ€.
@μ μ¬ λ°°μ΄ κ°μ²΄
λ°°μ΄μ²λΌ μΈλ±μ€λ‘ νλ‘νΌν° κ°μ μ κ·Όν μ μκ³ , length νλ‘νΌν°λ₯Ό κ°λ κ°μ²΄
λ¬Έμμ΄ : μΈλ±μ€λ₯Ό ν΅ν΄ κ° λ¬Έμμ μ κ·Ό κ°λ₯. length νλ‘νΌν° κ°μ§. forλ¬Έ μν κ°λ₯
κ°μ μν μ λ¬(pass by value)
1) λ³μμ λ³μλ₯Ό ν λΉνμ λ 무μμ΄ μ΄λ»κ² μ λ¬λ κΉ?

copy λ³μμ μμ κ°μ κ°λ score λ³μλ₯Ό ν λΉνλ©΄, ν λΉλ°λ λ³μ(copy)μλ ν λΉλλ λ³μ(score)μ μμ κ° 80μ΄ λ³΅μ¬λμ΄ μ λ¬λλ€.
βscoreλ³μμ copy λ³μμ κ° 80μ λ€λ₯Έ λ©λͺ¨λ¦¬κ³΅κ°μ μ μ₯λ λ³κ°μ κ°μ΄λ€.
2) 1 μ΄ν score λ³μμ μλ‘μ΄ μ«μ κ° 100μ μ¬ν λΉνλ©΄ copyμ κ°μ μ΄λ»κ² λ κΉ?
scoreμ copy λ³μμ κ°μ λ€λ₯Έ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ λ³κ°μ κ°μ΄κΈ° λλ¬Έμ, score λ³μλ₯Ό λ³κ²½ν΄λ copy λ³μ κ°μλ μ΄λ ν μν₯λ μ£Όμ§ μλλ€.
κ°μ μν μ λ¬? μλ°ν λ§νλ©΄, κ°μ΄ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ λ¬
β
11.3 κ°μ²΄
μλ°μ€ν¬λ¦½νΈ κ°μ²΄μ κ΄λ¦¬ λ°©μ
V8 μλ°μ€ν¬λ¦½νΈ μμ§μμλ νλ‘νΌν°μ μ κ·ΌνκΈ° μν΄ λμ νμ λμ
νλ ν΄λμ€λΌλ λ°©μμ μ¬μ©νλ€.
λ³κ²½ κ°λ₯ν κ°
κ°μ²΄λ₯Ό ν λΉν λ³μκ° κΈ°μ΅νλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ 곡κ°μ μ κ·Όνλ©΄
μ°Έμ‘° κ°μ μ κ·Όν μ μλ€.μ°Έμ‘° κ°(reference value): μμ±λ κ°μ²΄κ° μ μ₯λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμ
μ¦, κ°μ²΄λ₯Ό ν λΉν λ³μμλ μ°Έμ‘° κ°μ΄ μ μ₯λμ΄μκ³ , λ³μλ μ΄ μ°Έμ‘° κ°μ ν΅ν΄ κ°μ²΄μ μ κ·Όν μ μλ€.
κ°μ²΄λ₯Ό ν λΉν λ³μλ μ¬ν λΉ μμ΄ κ°μ²΄λ₯Ό μ§μ λ³κ²½ν μ μλ€.
μ¦, μ¬ν λΉ μμ΄
νλ‘νΌν° λμ μΆκ°,νλ‘νΌν° κ° κ°±μ,νλ‘νΌν° μ체 μμ λ κ°λ₯νλ€.
κ°μ²΄λ₯Ό ν λΉν λ³μμ μ¬ν λΉνμ§ μμκΈ° λλ¬Έμ, κ°μ²΄λ₯Ό ν λΉν λ³μμ μ°Έμ‘°κ°μ λ³κ²½λμ§ μλλ€. (μλ κ·Έλ¦Ό μ°Έκ³ )
π λ¨μ : μ¬λ¬κ°μ μλ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ ν μ μλ€λ μ
μ°Έμ‘°μ μν μ λ¬(pass by reference)
μ¬λ¬κ°μ μλ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ ν μ μλ€.
κ°μ²΄λ₯Ό κ°λ¦¬ν€λ λ³μ(μλ³Έ, person)λ₯Ό λ€λ₯Έ λ³μ(μ¬λ³Έ, copy)μ ν λΉνλ©΄ μλ³Έμ
μ°Έμ‘° κ°μ΄ 볡μ¬λμ΄ μ λ¬λλ€. βμ°Έμ‘°μ μν μ λ¬
μλ³Έ personκ³Ό μ¬λ³Έ copy λͺ¨λ λμΌν κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€ == λ κ°μ μλ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ
μ°Έμ‘°μ μν μ λ¬?
κ²°κ΅,
κ°μ μν μ λ¬κ³Όμ°Έμ‘°μ μν μ λ¬μ μλ³μκ° κΈ°μ΅νλ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λμ΄ μλ κ°μ 볡μ¬ν΄μ μ λ¬νλ€λ λ©΄μμ λμΌν¨λ¨, λ³μμ μ μ₯λμ΄ μλ κ°μ΄ μμκ°μ΄λ μ°Έμ‘°κ°μ΄λμ μ°¨μ΄κ° μμ λΏ
λ°λΌμ, μλ°μ€ν¬λ¦½νΈμλ βμ°Έμ‘°μ μν μ λ¬βμ μ‘΄μ¬νμ§ μλλ€κ³ λ§ν μ μμ
μμ λ³΅μ¬ vs κΉμ 볡μ¬
μμ 볡μ¬(shallow copy) : κ°μ²΄μ μ€μ²©λ κ°μ²΄λ μ°Έμ‘° κ°μ 볡μ¬
κΉμ 볡μ¬(deep copy) :κ°μ²΄μ μ€μ²©λ κ°μ²΄κΉμ§ μμ κ°μ²λΌ μμ ν 볡μ¬
Last updated