κΈ°λ³Έν λ°μ΄ν° (primitive type)
- Number
- String
- Boolean
- Null
- Undefined
- Symbol
- .etc
μ°Έμ‘°ν λ°μ΄ν° (reference type)
- Object
- Array
- Function
- Date
- regexp
- Map, WeakMap
- Set, WeakSet
κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ κ΅¬λΆ μ§λ κ°μ₯ ν° μ μ μ€μ κ° μ 체 λ³΅μ¬ vs μ€μ κ°μ΄ λ€μ΄μλ μ£Όμ κ° λ³΅μ¬μ΄λ€.
β· κΈ°λ³Έν (copy value of a)
let a = 1;
let b = a;
a += 10;
console.log(a) //11
console.log(b) //1μμ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ aμ κ°μ΄ λ³νλλΌλ bμ κ°μ κ·Έλλ‘ μΈ κ²μ λ³Ό μ μλ€.
let b = a; μ½λλ₯Ό ν΅ν΄ aκ° μ μ²΄κ° λ³΅μ¬λμ΄ bλΌλ λ³μμ λ΄κ²Όλ€.
a, bλ μλ‘ μν₯μ λ°μ§ μκ³ λ
립μ μΌλ‘ μ‘΄μ¬νλ κ²μ λ³Ό μ μλ€.
[κΈ°λ³Έν λ°μ΄ν°κ° μ μ₯λλ μμ]
-
λ³μ μμμμ λΉ κ³΅κ°(@1003 : μμμ μ£Όμ κ°)μ ν보νλ€.
-
ν보ν 곡κ°μ μλ³μ(λ³μλͺ )λ₯Ό aλ‘ μ§μ νλ€.
-
μΌλ¨ λ°μ΄ν° μμμμ 1μ μ°Ύκ³ , μμΌλ©΄ λ°μ΄ν° 곡κ°μ νλ λ§λ€μ΄(@5004)μ μ«μ 1μ μ μ₯νλ€.
-
λ³μ μμμμ aλΌλ μλ³μλ₯Ό κ²μνλ€.(@1003).
-
μμ μ μ₯ν λ¬Έμμ΄μ μ£Όμ(@5004)λ₯Ό @1003μ 곡κ°μ μ°κ²°νλ€.
a += 10 μ½λ μ²λ¦¬ -
1μ΄ μ μ₯λ 곡κ°μ 11μ ν λΉνλ λμ λ°μ΄ν° μμμμ 11μ μ°Ύκ³ , μμΌλ©΄ μλ‘ λ§λ€μ΄ λ³λμ 곡κ°μ μ μ₯νλ€.
-
κ·Έ μ£Όμλ₯Ό 1003μ 곡κ°μ μ°κ²°νλ€.
- λΆλ³κ° (immutable)
μμ μ²λ¦¬ κ³Όμ μμ ν λ² λ§λ κ°μ λ€λ₯Έ κ°μΌλ‘ λ³κ²½λμ§ μλλ€.
λμ μλ‘ λ§λλ κ³Όμ μ ν΅ν΄μλ§ λ³κ²½μ΄ μΌμ΄λκ³ μλ€. μ΄κ²μ΄ λΆλ³ κ°μ μ±μ§μ΄λ€.
ν λ² λ§λ€μ΄μ§ κ°μ κ°λΉμ§ 컬λ ν
μ λΉνμ§ μλ ν μμν λ³νμ§ μλλ€.
β· μ°Έμ‘°ν ( a has address of "{ x : 1}" )
let a = { x : 1 };
let b = a;
a.x += 10;
console.log(a.x); //11
console.log(b.x) //11κΈ°λ³Ένκ³Ό λ€λ₯΄κ² let b = a; μ½λλ₯Ό ν΅ν΄ {x : 1} μ μ£Όμ κ°μ΄ bλΌλ λ³μμ λ΄κ²Όλ€.
a, bλ₯Ό μ½μλ‘ μ°μ΄λ³΄λ©΄ aκ°λ§ λ³νμμΌ°μ§λ§, bκ°λ +10μ΄ λ κ²μ μ μ μλ€.
μ¦ a, bλ μλ‘ μν₯μ λ°κ³ μλ κ²μ λ³Ό μ μλ€.
[μ°Έμ‘°ν λ°μ΄ν°κ° μ μ₯λλ μμ]
-
λ³μ μμμμ λΉ κ³΅κ°(@1002 : μμμ μ£Όμ κ°)μ ν보νλ€.
-
ν보ν 곡κ°μ μλ³μ(λ³μλͺ )λ₯Ό aλ‘ μ§μ νλ€.
-
μμμ λ°μ΄ν° μ μ₯ 곡κ°(@5001) μ λ°μ΄ν°λ₯Ό μ μ₯νλ €κ³ λ³΄λ μ¬λ¬ κ°μ νλ‘νΌν°λ‘ μ΄λ€μ§ λ°μ΄ν° κ·Έλ£Ήμ΄λ€.
μ΄ κ·Έλ£Ή λ΄λΆμ νλ‘νΌν°(x) λ€μ μ μ₯νκΈ° μν΄ λ³λμ λ³μ μμμ λ§λ ¨νκ³ , κ·Έ μμμ μ£Όμ(@7103~ ?)λ₯Ό @5001μ μ μ₯νλ€. -
@7103 μ xλΌλ νλ‘νΌν° μ΄λ¦μ μ§μ νλ€.
-
λ°μ΄ν° μμμμ μ«μ 1μ κ²μνκ³ μμΌλ©΄, μμλ‘ @5003μ μ μ₯νκ³ , μ΄ μ£Όμλ₯Ό λ€μ @7103μ μ μ₯νλ€.
a.x += 10 μ½λ μ²λ¦¬ -
λ°μ΄ν° μμμμ μ«μ 11μ κ²μνλ€. κ²μ κ²°κ³Όκ° μμΌλ©΄ λΉ κ³΅κ°μΈ @5005μ μ μ₯νκ³ κ·Έ μ£Όμλ₯Ό @7103μ μ μ₯νλ€.
- κ°λ³κ° (mutable)
μμ μ²λ¦¬ κ³Όμ μμ 10μ λνκΈ° μ κ³Ό λν ν λ³μ aκ° λ°λΌλ³΄κ³ μλ μ£Όμλ μ¬μ ν @5001λ‘ λ³νμ§ μλ κ²μ λ³Ό μ μλ€.
μ¦ 'μλ‘μ΄ κ°μ²΄'κ° λ§λ€μ΄μ§ κ²μ΄ μλλΌ κΈ°μ‘΄μ κ°μ²΄ λ΄λΆμ κ°λ§ 1μμ 11λ‘ λ°λ κ²μ΄λ€.
λ°μ΄ν° μμμ μ μ₯λ κ°μ λͺ¨λ λΆλ³κ°μ΄μ§λ§(1,11), λ³μ(@7103)μλ λ€λ₯Έ κ°μ μΌλ§λ μ§ λμ
ν μ μλ€.
- λ³μ νΈμ΄μ€ν
μλ°μ€ν¬λ¦½νΈλ λ³μ νΈμ΄μ€ν μ΄λΌλ νΉμ§μ κ°κ³ μλ€.
console.log(val1);
var val1;μ½μμ°½μ λ³μ val1μ μΆλ ₯νλ μ½λλ₯Ό μ
λ ₯νλ€. κ·Έλ°λ° λ³μ val1μ μμ§ μ μΈλκΈ° μ μ΄λ€.
μλλλ‘λΌλ©΄ μλ°μ€ν¬λ¦½νΈ μ½λλ μμ°¨μ μΌλ‘ μμμ μλλ‘ μ€νλκΈ° λλ¬Έμ μ°Έμ‘°ν μ μλ€λ μλ¬κ° λ° κ²μ΄λ€.
console.log(vall);
var vall;
undefined
undefinedνμ§λ§ κ²°κ³Όμ μΌλ‘λ undefinedκ° λ¬λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ³μ μ μΈ μ½λλ μ΄λμ μλ κ°μ₯ λ¨Όμ μ€νμν€κΈ° λλ¬Έμ΄λ€. κ·Έλ¦¬κ³ κ·Έ νμ λ€μ μμ°¨μ μΌλ‘ μ½λλ₯Ό μ€νμν¨λ€.
μ΄λ κ² λ³μ μ μΈλ¬Έμ΄ λ€λ₯Έ μ½λλ€λ³΄λ€ μλ‘ λμ΄μ¬λ €μ Έ λ¨Όμ μ€νλλ κ²μ λ³μ νΈμ΄μ€ν μ΄λΌκ³ νλ€.
[Reference] https://www.youtube.com/watch?v=vMsK5f_0938