πΈ04μ₯. λ³μ
β
4.1 λ³μλ 무μμΈκ°? μ νμνκ°?
λ©λͺ¨λ¦¬(Memory)
μ»΄ν¨ν°λ λ©λͺ¨λ¦¬ μ μ ν¬κΈ°(1byte) λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯νκ±°λ μ½λλ€.
λ©λͺ¨λ¦¬ μ£Όμλ λ©λͺ¨λ¦¬ 곡κ°μ μμΉλ₯Ό λνλ΄λ©°, 0λΆν° μμν΄μ λ©λͺ¨λ¦¬μ ν¬κΈ°λ§νΌ μ μλ‘ ννλ¨ (ex) 4GB λ©λͺ¨λ¦¬ : 0 ~ 42494967295 (0x00000000 ~ 0xFFFFFFFF))
λ©λͺ¨λ¦¬μ μ μ₯λλ λͺ¨λ κ°μ
2μ§μ
μ΄λ€.
λ³μ(Variable)
νλ‘κ·Έλλ° μΈμ΄μ μ»΄νμΌλ¬ λλ μ΄ν°ν리ν°μ μν΄ κ°μ΄ μ μ₯λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ‘ μΉνλμ΄ μ€νλ¨
μλ μμλ₯Ό ν΅ν΄ νμΈν΄λ³΄λ©΄,
result =
λ³μ μ΄λ¦(λ³μλͺ )
: λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μλ³ν μ μλ κ³ μ ν μ΄λ¦λ³μμ μ μ₯λ κ°(μμ±λ 30) =
λ³μκ°
λ³μμ κ°μ μ μ₯νλ νμ =
ν λΉ(assignment, λμ , μ μ₯)
λ³μμ μ μ₯λ κ°μ μ½μ΄ λ€μ΄λ κ² =
μ°Έμ‘°(reference)
β
4.2 μλ³μ
μλ³μ(Identifier)
resultλΌλ μλ³μλ κ° 30μ μλ³ν μ μμ΄μΌ νλ€.
μ΄λ₯Ό μν΄ resultλ κ° 30μ΄ μ μ₯λμ΄μλ
λ©λͺ¨λ¦¬μ£Όμ(0x0669F913)
μ κΈ°μ΅ν΄μΌ νλ€.μ¦, μλ³μλ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μ£Όμμ λ§€νκ΄κ³λ₯Ό λ§ΊμΌλ©°, λ§€ν μ 보λ λ©λͺ¨λ¦¬μ μ μ₯λμ΄μΌ νλ€.
μλ³μλ‘ κ°μ ꡬλ³ν΄μ μλ³νλ€λ κ² = μλ³μκ° κΈ°μ΅νκ³ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μ κ·Όν μ μλ€.
λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ μ΄λ€ κ°μ μλ³ν μ μ΄λ¦μ λͺ¨λ μλ³μλ€.
λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ λ³μ κ°, ν¨μ, ν΄λμ€ λ±μ μλ³ν μ μλ€.
μλ³μλ λ€μ΄λ°κ·μΉμ μ€μν΄μΌνκ³ , μ μΈ(declaration)μ ν΅ν΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μλ³μμ μ‘΄μ¬λ₯Ό μλ¦°λ€.
β
4.3 λ³μ μ μΈ
λ³μ μ μΈ(Variable Declaration)
λ³μ μ μΈμ μν΄ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ ν΄μ (release)λκΈ° μ κΉμ§ 보νΈλλ€.
λ³μλ₯Ό μ¬μ©νλ €λ©΄ λ°λμ μ μΈμ΄ νμνκ³ , var, let, const ν€μλλ₯Ό ν΅ν΄ μ μΈνλ€.
var
β ES6 λμ ν(var
,let
,const
)var μ λ¨μ : λΈλ‘ λ 벨 μ€μ½ν λ―Έμ§μ, ν¨μ λ 벨 μ€μ½ν μ§μ. (β μλμΉ μκ² μ μλ³μ μ μΈ)
@ν€μλ
: μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό ν΄μνκ³ μ€ννλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μνν λμμ κ·μ ν μΌμ’ μ λͺ λ Ήμ΄. μ¦, μλ°μ€ν¬λ¦½νΈ μμ§μ ν€μλλ₯Ό λ§λλ©΄ μ½μλ λμμ μννλ€.
var ν€μλ
λ³μ μ μΈλ¬Έμ λ³μ μ΄λ¦μ λ±λ‘νκ³ κ°μ μ μ₯ν λ©λͺ¨λ¦¬ 곡κ°μ ν보νλ€
λ³μμ κ°μ μμ§ ν λΉλμ§ μμ μν.
ν보λ λ©λͺ¨λ¦¬ 곡κ°μ λΉμ΄μλ κ²μ΄ μλ. μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄
undefined
κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°νλλ€.
@undefined
: μλ°μ€ν¬λ¦½νΈμμ μ 곡νλ μμ νμ μ κ°(primitive value)
μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ 2λ¨κ³μ κ±°μ³ μννλ€.
λ³μμ΄λ¦μ
μ€ν 컨ν μ€νΈ
μ λ±λ‘λλ€.varλ₯Ό μ΄μ©ν λ³μ μ μΈμ μ μΈλ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλλ€.
μ μΈνμ§ μμ μλ³μμ μ κ·Όνλ©΄,
ReferenceError(μ°Έμ‘°μλ¬)
κ° λ°μνλ€.μλ³μλ₯Ό ν΅ν΄ κ°μ μ°Έμ‘°νλ € νμ§λ§, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ±λ‘λ μλ³μλ₯Ό μ°Ύμ μ μμ λ λ°μνλ μλ¬μ΄λ€.
@μ€ν 컨ν μ€νΈ(execution context)
:
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μμ€μ½λλ₯Ό νκ°νκ³ μ€ννκΈ° μν΄ νμν νκ²½μ μ 곡νκ³ μ½λμ μ€ν κ²°κ³Όλ₯Ό μ€μ λ‘ κ΄λ¦¬νλ μμ
μ¦, μ€ν 컨ν μ€νΈλ₯Ό ν΅ν΄ μλ³μμ μ€μ½νλ₯Ό κ΄λ¦¬νλ€.
μ€ν 컨ν μ€νΈ λ΄μ key-value νμμΈ κ°μ²΄λ‘ λ³μ μ΄λ¦κ³Ό λ³μ κ°μ΄ λ±λ‘λλ€.
β
4.4 λ³μ μ μΈμ μ€νμμ κ³Ό λ³μ νΈμ΄μ€ν
λ³μ μ μΈμ μ€νμμ
μλ°μ€ν¬λ¦½νΈ μμ§μ λ¨Όμ
μμ€μ½λμ νκ° κ³Όμ
μ κ±°μΉλ©΄μ μμ€μ½λλ₯Ό μ€νν μ€λΉλ₯Ό νλ€.μ΄ λ, λͺ¨λ μ μΈλ¬Έ(λ³μ μ μΈλ¬Έ, ν¨μ μ μΈλ¬Έ λ±)μ μμ€μ½λμμ μ°Ύμλ΄ λ¨Όμ μ€ννλ€.
κ·Έ λ€μ, μ μΈλ¬Έμ μ μΈνκ³ μμ€ μ½λλ₯Ό
ν μ€μ© μμ°¨μ μΌλ‘ μ€ν
νλ€.
μλ μμ λ₯Ό λ€μ μ΄ν΄λ³΄μ
μλ°μ€ν¬λ¦½νΈλ
μΈν°ν리ν°
μ μν΄ ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ―λ‘ μμ μ½λλ ReferenceErrorκ° λ°μν κ²μ²λΌ 보μ΄λ μλ¬κ° λ°μνμ§ μκ³undefindκ° μΆλ ₯
λλ€.λ³μ μ μΈμ΄ μμ€ μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ μμ (λ°νμ)μ΄ μλλΌ κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€.
λ³μ νΈμ΄μ€ν
(Variable Hoisting)
μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ΄ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ λ¨Όμ μ€νλλ€.
λ³μ μ μΈ(μ μΈ&μ΄κΈ°ν)μ΄ μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ λ°νμ μ΄μ λ¨κ³μμ λ¨Όμ μ€ννλ κ²μ λ³μ νΈμ΄μ€ν μ΄λΌ νλ€.
β
4.5 κ°μ ν λΉ
βλ³μ μ μΈκ³Ό κ°μ ν λΉ(Assignment, λμ
, μ μ₯) μ μ€νμμ μ΄ λ€λ₯΄λ€.
μλ μμλ₯Ό μ΄ν΄λ³΄μ (μ΄λ―Έμ§: λ³μ μ μΈκ³Ό κ°μ ν λΉ μ ν μμ λ©λͺ¨λ¦¬ ꡬ쑰)
β
4.6 κ°μ μ¬ν λΉ
μ¬ν λΉ
λ³μλ μ μΈκ³Ό λμμ undefinedλ‘ μ΄κΈ°ν λκΈ°λλ¬Έμ μλ°ν λ³μ μ μΈλ μ¬ν λΉμ΄λΌκ³ ν μ μλ€.
λ³μμ κ°μ μ¬ν λΉ νλ©΄, μ΄μ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ§μ°κ³ μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ κ°μ μ μ₯νλ€.
μ΄μ κ°μ μ΄λ ν μλ³μμλ μ°κ²°λμ΄μμ§ μκ² λ¨ β κ°λΉμ§ μ½λ ν°μ μν΄ λ©λͺ¨λ¦¬μμ μλν΄μ λλ€. (λ¨, μΈμ ν΄μ λ μ§λ μμΈ‘ X)
κ°μ μ¬ν λΉν μ μμ΄μ λ³μμ μ μ₯λ κ°μ λ³κ²½ν μ μλ κ²μ
μμ(constant)
λΌ νλ€.
@κ°λΉμ§ μ½λ ν°
: μ ν리μΌμ΄μ μ΄ ν λΉ(allocate)ν λ©λͺ¨λ¦¬ 곡κ°μ μ£ΌκΈ°μ μΌλ‘ κ²μ¬νμ¬ λμ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ (release)νλ κΈ°λ₯@λμ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬
: μ΄λ€ μλ³μλ μ°Έμ‘°νμ§ μλ λ©λͺ¨λ¦¬ 곡κ°
β
4.7 μλ³μ λ€μ΄λ° κ·μΉ
μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν
λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)
λ₯Ό ν¬ν¨ ν μ μλ€.λ¨, μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν
λ¬Έμ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)
λ‘ μμν΄μΌ νλ€. (μ«μ μμ X
)
λ€μ΄λ° 컨벀μ
(Naming Convention)
νλ μ΄μμ μλ¨μ΄λ‘ ꡬμ±λ μλ³μλ₯Ό λ§λ€ λ κ°λ μ± μ’κ² λ¨μ΄λ₯Ό νλμ ꡬλΆνκΈ° μν΄ κ·μ ν λͺ λͺ κ·μΉ
javascriptλ μΌλ°μ μΌλ‘
λ³μ, ν¨μ μ΄λ¦ :
μΉ΄λ© μΌμ΄μ€
μμ±μ ν¨μ, ν΄λμ€ μ΄λ¦ :
νμ€μΉΌ μΌμ΄μ€
Last updated