04_λ³μ
4.1 λ³μλ 무μμΈκ°? μ νμνκ°?
λ³μλ νλ‘κ·Έλλ° μΈμ΄μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν ν΅μ¬ κ°λ
μ΄λ€.
νλ‘κ·Έλλ° μΈμ΄λ κΈ°μ΅νκ³ μΆμ κ°μ λ©λͺ¨λ¦¬μ μ μ₯νκ³ , μ μ₯λ κ°μ μ½μ΄ λ€μ¬ μ¬μ¬μ©νκΈ° μν΄ λ³μλΌλ λ©μ»€λμ¦μ μ 곡νλ€.
μ¦, λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦μ λ§νλ€.
- κ°μ μμΉλ₯Ό κ°λ¦¬ν€λ μμ§μ μΈ μ΄λ¦μ΄λ€.
- νλ‘κ·Έλλ° μΈμ΄μ μ»΄νμΌλ¬ λλ μΈν°ν리ν°μ μν΄ κ°μ΄ μ μ₯λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ‘ μΉνλμ΄ μ€νλλ€.
λ³μμ κ°μ μ μ₯νλ κ²μ ν λΉ(assignment)μ΄λΌκ³ νκ³ ,
λ³μμ μ μ₯λ κ°μ μ½μ΄ λ€μ΄λ κ²μ μ°Έμ‘°(reference)λΌκ³ νλ€.
μΆκ° ) μ»΄ν¨ν°κ° λ°μ΄ν°λ₯Ό κΈ°μ΅νλ λ°©λ²
μ¬λμ κ³μ°κ³Ό κΈ°μ΅μ λͺ¨λ λλμμ νμ§λ§, μ»΄ν¨ν°λ μ°μ°κ³Ό κΈ°μ΅μ μννλ λΆνμ΄ λλμ΄μ Έ μλ€.
- μ»΄ν¨ν°λ CPUλ₯Ό μ¬μ©ν΄ μ°μ°νκ³ , λ©λͺ¨λ¦¬ λ₯Ό μ¬μ©ν΄ λ°μ΄ν°λ₯Ό κΈ°μ΅ νλ€.
- λ©λͺ¨λ¦¬(Memory) λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬ μ (Memory Cell)μ μ§ν©μ²΄μ΄λ€
- μ»΄ν¨ν°λ λ©λͺ¨λ¦¬ μ
μ ν¬κΈ°, μ¦ 1λ°μ΄νΈ λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯ νκ³ μ½μ΄ λ€μΈλ€.
- κ° μ (νμμ) μ κ³ μ μ λ©λͺ¨λ¦¬ μ£Όμ(Memory Address)λ₯Ό κ°λλ°, λ©λͺ¨λ¦¬ 곡κ°μ μμΉλ₯Ό λνλ΄λ©°, 0λΆν° μμν΄μ λ©λͺ¨λ¦¬μ ν¬κΈ°λ§νΌ μ μλ‘ ννλλ€.
- μ»΄ν¨ν°λ λͺ¨λ λ°μ΄ν°λ₯Ό 2μ§μλ‘ μ²λ¦¬νλ€.(μ«μ, ν μ€νΈ, μ΄λ―Έμ§, λμμ λ± μμΈμμ΄)
- μμμΈ μ«μ κ° 10, 20, 30μ νΈμμ 10μ§μλ‘ νκΈ°νμ§λ§ μλλ 2μ§μλ‘ λ€μ΄κ°λ€.
κ°μ΄ μ μ₯λ λ©λͺ¨λ¦¬ μ£Όμλ μ½λκ° μ€νλ λ λ©λͺ¨λ¦¬μ μν©μ λ°λΌ μμλ‘ κ²°μ . λ°λΌμ, λμΌν μ»΄ν¨ν°μμ λμΌν μ½λλ₯Ό μ€νν΄λ μ½λκ° μ€νλ λλ§λ€ μ μ₯λ λ©λͺ¨λ¦¬ μ£Όμλ λ³κ²½λλ€.
4.2 μλ³μ
λ³μ μ΄λ¦μ μλ³μ(identifier) λΌκ³ λ νλ€.
- μλ³μ λ μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ ν μ μλ κ³ μ ν μ΄λ¦μ λ§νλ€.
- μλ³μ λ μ΄λ€ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅(μ μ₯) νλ€.
- μ¦, μλ³μ λ κ°μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅νκ³ μλ€.
μλ³μλ‘ κ°μ ꡬλ³ν΄μ μλ³νλ€λ κ²μ ?
-> μλ³μκ° κΈ°μ΅νκ³ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μ κ·Ό ν μ μλ€λ μλ―Έ
λ³μ, ν¨μ, ν΄λμ€ λ±μ μ΄λ¦κ³Ό κ°μ μλ³μλ λ€μ΄λ° κ·μΉμ μ€μν΄μΌ νλ©°,
μ μΈ(declaration) μ μν΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μλ³μμ μ‘΄μ¬λ₯Ό μλ¦°λ€.
4.3 λ³μ μ μΈ
λ³μ μ μΈμ΄λ λ³μλ₯Ό μμ±νλ κ²μ λ§νλ€.
- β κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보 νκ³
- β‘ λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό μ°κ²°ν΄μ
- β’ κ°μ μ μ₯ ν μ μκ² μ€λΉνλ κ²μ΄λ€.
λ³μλ₯Ό μ¬μ©νλ €λ©΄ λ°λμ μ μΈμ΄ νμνλ€.
- var, let, const ν€μλλ₯Ό μ¬μ©νλ€.
ν€μλλ? μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό ν΄μνκ³ μ€ννλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μνν λμμ κ·μ ν μΌμ’ μ λͺ λ Ήμ΄.
var μ νΉμ§ 1. λΈλ‘ λ 벨 μ€μ½νλ₯Ό μ§μνμ§ μκ³ , ν¨μ λ 벨 μ€μ½νλ₯Ό μ§μ, 2.μ μΈκ³Ό μ΄κΈ°νκ° λμμ μ§ν
var score; // λ³μκ° μ μΈλ¨κ³Ό λμμ, μ묡μ μΌλ‘ undefined ν λΉ
μ€λͺ μ λ§λΆμ΄λ©΄, μλλ λ³μ μ μΈλ¬Έμ΄λ€.
var score;
λ³μλ₯Ό μ μΈν μ΄ν μμ§ κ°μ ν λΉνμ§ μμλ€. λ°λΌμ λ³μ μ μΈμ μν΄ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ λΉμ΄ μμ κ²μΌλ‘ μκ° ν μ μμΌλ, ν보ν λ©λͺ¨λ¦¬ 곡κ°μλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ undefined λΌλ κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°ν λλ€. -> μ΄κ²μ μλ°μ€ν¬λ¦½νΈμ λ
νΉν νΉμ§μ΄λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ λ€μκ³Ό κ°μ 2 λ¨κ³μ κ±°μ³ μννλ€.
- μ μΈ λ¨κ³ : λ³μ μ΄λ¦μ λ±λ‘ν΄μ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μμ μ‘΄μ¬λ₯Ό μλ¦°λ€.
- μ΄κΈ°ν λ¨κ³ : κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ μ묡μ μΌλ‘ undefined λ₯Ό ν λΉν΄ μ΄κΈ°ν
var ν€μλλ₯Ό μ¬μ©ν λ³μ μ μΈμ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλλ€.
μΌλ°μ μΌλ‘ μ΄κΈ°ν λ λ³μκ° μ μΈλ μ΄ν μ΅μ΄λ‘ κ°μ ν λΉλ°λ κ²μ λ§νλ€.
- var ν€μλλ₯Ό μ¬μ©ν λ³μ μ μΈμ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλλ€.
- μ¦, var ν€μλλ‘ μ μΈν λ³μλ undefined λ‘ μ묡μ μΈ μ΄κΈ°νκ° μλ μνλλ€.
4.4 λ³μ μ μΈμ μ€ν μμ κ³Ό λ³μ νΈμ΄μ€ν
console.log(score); // undefined
var score; // λ³μ μ μΈλ¬Έ
μμ μμλ₯Ό 보면 λ³μ μ μΈλ¬Έλ³΄λ€ λ³μλ₯Ό μ°Έμ‘°νλ μ½λκ° μμ μλ€.
μλ°μ€ν¬λ¦½νΈλ μΈν°ν리ν°μ μν΄ ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ―λ‘ console.log(score)
κ° κ°μ₯ λ¨Όμ μ€νλλλ°, μ€νλλ μμ μλ μμ§ score
λ³μμ μ μΈμ΄ μ€νλμ§ μμμ μ°Έμ‘° μλ¬(ReferenceError) λ°μ ν κ² μ²λΌ 보μΈλ€.
νμ§λ§ μ°Έμ‘° μλ¬κ° λ°μνμ§ μκ³ undefined κ° μΆλ ₯λλ€.
κ·Έ μ΄μ λ λ³μ μ μΈμ΄ μμ€μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ μμ , μ¦ λ°νμ(runtime) μ΄ μλλΌ κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€.
λ°νμ: μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ μμ
μλ°μ€ν¬λ¦½νΈ μμ§μ μμ€μ½λ μ€νμ μν μ€λΉ λ¨κ³μΈ μμ€μ½λμ νκ° κ³Όμ μμ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έ(λ³μ μ μΈλ¬Έ, ν¨μ μ μΈλ¬Έ λ±)μ μμ€μ½λμμ μ°Ύμλ΄ λ¨Όμ μ€ν ν μ΄ κ³Όμ μ΄ λλλ©΄ λΉλ‘μ μμ€μ½λλ₯Ό ν μ€μ© μμ°¨μ μΌλ‘ μ€ν νλ€.
- μ± λ€μ, λ³μ μ μΈλλ κ³Όμ μ 'μ€ν 컨ν μ€νΈ' μμ μμΈν μ΄ν΄λ³Ό μμ
- μ§κΈμ λ³μ μ μΈμ΄ μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ λ°νμ μ΄μ μ λ¨Όμ μ€ν λλ€λ μ μ μ£Όλͺ©!
μμ½νλ©΄, μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ΄ μμ€μ½λμ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ λ¨Όμ μ€νλλ€.
-> λ³μ μ μΈμ μμ€μ½λμ μμΉμ μκ΄μμ΄ λ³μλ₯Ό μ°Έμ‘° ν μ μλ€.
μμ κ°μ μλ°μ€ν¬λ¦½νΈμ κ³ μ ν νΉμ§μ λ³μ νΈμ΄μ€ν μ΄λΌ νλ€.
-> λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ νΉμ§
-> μ¬μ€ λ³μ μ μΈ λΏλ§ μλλΌ, var, let, const, function, function*, class ν€μλλ₯Ό μ¬μ©ν΄μ μ μΈνλ λͺ¨λ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ λ±) λ νΈμ΄μ€ν
λλ€.
4.5 κ°μ ν λΉ
λ³μμ κ°μ ν λΉ(λμ
, μ μ₯) ν λλ ν λΉ μ°μ°μ = λ₯Ό μ¬μ©.
ν λΉ μ°μ°μλ μ°λ³μ κ°μ μ’λ³μ λ³μμ ν λΉνλ€.
var score; // λ³μ μ μΈ
score = 80 // κ°μ ν λΉ
or
var score = 80; // μ μΈκ³Ό κ°μ ν λΉ
λ³μ μ μΈκ³Ό ν λΉμ νλμ λ¬Έμ₯μΌλ‘ ννν΄λ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μμ μ μΈκ³Ό κ°μ ν λΉμ 2κ°μ λ¬ΈμΌλ‘ λλμ΄μ κ°κ° μ€ν. λ°λΌμ λ³μμ undefinedκ° ν λΉλμ΄ μ΄κΈ°νλλ κ²μ λ³ν¨μ΄ μλ€.
μ£Όμν μ μ, λ³μμ κ°μ ν λΉν λλ μ΄μ κ° undefined
κ° μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ§μ°κ³
κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉ κ° 80μ μλ‘κ² μ μ₯νλ κ²μ΄ μλλΌ, μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³
κ·Έκ³³μ ν λΉ κ° 80μ μ μ₯νλ€.
4.6 κ°μ μ¬ν λΉ
μ¬ν λΉ μ΄λ, μ΄λ―Έ κ°μ΄ ν λΉλμ΄ μλ λ³μμ μλ‘μ΄ κ°μ λ λ€μ ν λΉνλ κ²μ λ§νλ€.
var score = 80; // λ³μ μ μΈκ³Ό κ°μ ν λΉ
score = 90; // κ°μ μ¬ν λΉ
- var ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉ ν μ μλ€.
- μ¬ν λΉμ νμ¬ λ³μμ μ μ₯λ κ°μ λ²λ¦¬κ³ μλ‘μ΄ κ°μ μ μ₯νλ κ²μ΄λ€.
- var ν€μλλ λ³μμ μ μΈκ³Ό λμμ undefined λ‘ μ΄κΈ°νλκΈ° λλ¬Έμ μλ°ν λ§νλ©΄ κ°μ μ²μμΌλ‘ ν λΉνλ κ²λ μ¬μ€μ μ¬ν λΉμ΄λ€.
λ¨μ½, κ°μ μ¬ν λΉ ν μ μμ΄μ λ³μμ μ μ₯λ κ°μ λ³κ²½ ν μ μλ€λ©΄, λ³μκ° μλλΌ μμ λΌ νλ€.
const ν€μλ
ES6μμ λμ λ const.
- const λ₯Ό μ¬μ©ν΄ μ μΈν λ³μλ μ¬ν λΉμ΄ κΈμ§.
- const ν€μλλ λ¨ ν λ²λ§ ν λΉ ν μ μλ λ³μλ₯Ό μ μΈ.
- λ°λΌμ constλ₯Ό μ¬μ©νλ©΄ μμλ₯Ό ννν μ μλ€.
λ³μμ κ°μ μ¬ν λΉνλ©΄ κΈ°μ‘΄ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ§μ°κ³ μλ‘μ΄ κ³΅κ°μ ν보νκ³
κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μ¬ν λΉ κ°μ μ μ₯νλ€.
λ μ΄μ νμνμ§ μμ, μ무λ μ¬μ©νκ³ μμ§ μμ λΆνμν κ°(μ¬ν λΉ νμ μ΄μ κ° λ±)λ€μ κ°λΉμ§ μ½λ ν°μ μν΄ λ©λͺ¨λ¦¬μμ μλ ν΄μ (release)λλ€. λ¨, λ©λͺ¨λ¦¬μμ μΈμ ν΄μ λ μ§λ μμΈ‘ν μ μλ€.
κ°λΉμ§ μ½λ ν°
μ ν리μΌμ΄μ μ΄ ν λΉν λ©λͺ¨λ¦¬ 곡κ°μ μ£ΌκΈ°μ μΌλ‘ κ²μ¬νμ¬ λ μ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νλ κΈ°λ₯μ λ§νλ€.
λ μ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ, μ΄λ€ μλ³μλ μ°Έμ‘°νμ§ μλ λ©λͺ¨λ¦¬ 곡κ°μ μλ―Έ.
μλ°μ€ν¬λ¦½νΈλ κ°λΉμ§ μ½λ ν°λ₯Ό λ΄μ₯νκ³ μλ 맀λμ§λ μΈμ΄(managed language)λ‘μ κ°λΉμ§ μ½λ ν°λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ λμ(memory leak)λ₯Ό λ°©μ§νλ€.
- μΈλ§€λμ§λ μΈμ΄λ κ°λ°μκ° λͺ μμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ ν΄μ νλ κ²
- 맀λμ§λ μΈμ΄λ λ©λͺ¨λ¦¬μ ν λΉ λ° ν΄μ λ₯Ό μΈμ΄ μ°¨μμμ λ΄λΉνκ³ κ°λ°μμ μ§μ μ μΈ λ©λͺ¨λ¦¬ μ μ΄λ₯Ό νμ©νμ§ μλλ€.
4.7 μλ³μ λ€μ΄λ° κ·μΉ
μλ³μ : μ΄λ ν κ°μ ꡬλ³ν΄μ μλ³ ν μ μλ κ³ μ ν μ΄λ¦
λ€μ΄λ° κ·μΉ
- νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ₯Ό ν¬ν¨ ν μ μλ€.
- λ¨, μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ‘ μμν΄μΌ νλ€.
- μ«μλ‘ μμνλ κ²μ νμ©νμ§ μλλ€.
- μμ½μ΄λ μλ³μλ‘ μ¬μ© ν μ μλ€.
μμ½μ΄ : νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©λκ³ μκ±°λ, μ¬μ©λ μμ μ΄ λ¨μ΄λ₯Ό λ§νλ€.
ex) await, class, case, const, else, default, false, export, if ....
ES5 λΆν° μ λμ½λ λ¬Έμλ₯Ό νμ©νλ―λ‘, μνλ²³ μΈμ νκΈμ΄λ μΌλ³Έμ΄ μλ³μλ μ¬μ© ν μ μλ€.
νμ§λ§, κΆμ₯νμ§ μλλ€.
μλ°°λλ μμ
var first-name;
var 1st;
var this;
μλ°μ€ν¬λ¦½νΈλ λμλ¬Έμλ₯Ό ꡬλ³νλ―λ‘ λ€μ λ³μλ κ°κ° λ³κ°μ λ³μ
var firstname;
var firstName;
var FIRSTNAME;
λ€μ΄λ° 컨벀μ
νλ μ΄μμ μμ΄ λ¨μ΄λ‘ ꡬμ±λ μλ³μλ₯Ό λ§λ€ λ κ°λ μ± μ’κ² λ¨μ΄λ₯Ό νλμ ꡬλΆνκΈ° μν΄ κ·μ ν λͺ λͺ
// μΉ΄λ© μΌμ΄μ€(camelCase)
var firstName;
// μ€λ€μ΄ν¬ μΌμ΄μ€(snake_case)
var first_name;
// νμ€μΉΌ μΌμ΄μ€(PascalCase)
var FirstName;
'π Book-Talk > λͺ¨λ JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ°μ°μ (0) | 2022.11.10 |
---|---|
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_λ°μ΄ν° νμ (2) | 2022.11.10 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_ννμκ³Ό λ¬Έ (0) | 2022.11.10 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μλ°μ€ν¬λ¦½νΈλ? (0) | 2022.11.09 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive _νλ‘κ·Έλλ° (0) | 2022.11.09 |