λ³μλ?
10 + 20
μμ κ°μ΄ 10 + 20μ μ°μ°ν ν, κ·Έ κ²°κ³Όκ°μ νμ©νκ³ μΆλ€κ³ ν΄λ³΄μ. CPUκ° 10+20μ κ³μ°ν΄μ κ·Έ κ²°κ³ΌμΈ 30μ λ©λͺ¨λ¦¬ μ΄λκ°μ μ μ₯νκ² μ§λ§, κ°λ°μ μ μ₯μμλ κ·Έκ²μ νμ©ν λ°©λ²μ΄ μλ€. μ΄λ΄ λ νμν κ²μ΄ λ°λ‘ λ³μ(variable)λ€. λ³μλ κΈ°μ΅νκ³ μΆμ κ°μ λ©λͺ¨λ¦¬μ μ μ₯νκ³ , μ μ₯λ κ°μ μ½μ΄ λ€μ¬ μ¬μ¬μ©νκΈ° μν΄ μ 곡νλ λ©μ»€λμ¦μ΄λ€.
μ¦, λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° κ·Έ μ체 νΉμ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦μ΄λ€. μ½κ² λ§ν΄ μ΄λ ν κ°μ μμΉλ₯Ό κ°λ¦¬ν€λ μμ§μ μΈ μ΄λ¦μΈ κ²μ΄λ€.
let result = 10 + 20;
console.log(result); // 30
μμ κ°μ΄ result
λΌλ λ³μλ₯Ό μ¬μ©ν΄μ κ³μ°λ κ°μ μ μ₯νκ³ , κ·Έ κ°μ λ€μ νμ©ν μ μκ² λμλ€. μ΄λ κ² λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λ³μ μ΄λ¦(λ³μλͺ
, μμ μμ result
)μ΄λΌ νκ³ , λ³μμ μ μ₯λ κ°μ λ³μ κ°(μμ μμ 30
)μ΄λΌκ³ νλ€.
μλ³μ
λ³μ μ΄λ¦μ μλ³μ(identifier)λΌκ³ λ νλ€. μλ³μλ μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ΄λ€. κ°μ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λλ―λ‘, μλ³μλ κ°μ ꡬλ³νκΈ° μν΄ κ·Έ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅(μ μ₯)νλ€. λ°λΌμ μλ³μλ μ΄λ€ κ°μ΄ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μ£Όμμ λ§€ν κ΄κ³λ₯Ό λ§Ίκ³ , κ·Έ λ§€ν κ΄κ³ μμ λ©λͺ¨λ¦¬μ μ¬λ³Ό ν μ΄λΈ ννλ‘ μ μ₯λμ΄ κ΄λ¦¬λλ€.
λ³μ μ μΈ
λ³μ μ μΈ(variable declaration)μ΄λ λ³μλ₯Ό μμ±νλ κ²μΌλ‘, λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ , λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό μ°κ²°ν΄ κ°μ μ μ₯ν μ μλλ‘ μ€λΉνλ κ²μ΄λ€. λ³μ μ μΈ μ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ ν΄μ λκΈ° μ κΉμ§λ λꡬλ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ¬μ©ν μ μλλ‘ λ³΄νΈλλ€.
λ³μλ₯Ό μ μΈν λλ var
, let
, const
ν€μλλ₯Ό μ¬μ©ν μ μλ€. let
κ³Ό const
λ ES6μμ λμ
λ ν€μλλ‘, λ¨Όμ var
ν€μλμ λν΄ μ΄ν΄λ³΄μ.
var score; // λ³μ μ μΈ(λ³μ μ μΈλ¬Έ)
μμ κ°μ λ³μ μ μΈλ¬Έμ μ΄λ¦ scoreλ₯Ό μ€ν 컨ν
μ€νΈμ λ±λ‘νκ³ κ°μ μ μ₯ν λ©λͺ¨λ¦¬ 곡κ°μ ν보νλ€. μ΄λ λ³μμ κ°μ΄ ν λΉλμ§ μμκΈ° λλ¬Έμ ν보λ λ©λͺ¨λ¦¬ 곡κ°μ λΉμ΄μλ€κ³ μκ°ν μ μμ§λ§, ν΄λΉ λ©λͺ¨λ¦¬ 곡κ°μλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ undefined
λΌλ κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°νλλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ β μ μΈ λ¨κ³, β‘μ΄κΈ°ν λ¨κ³ μ΄λ κ² 2λ¨κ³μ κ±Έμ³ μννλ€. μ μΈ λ¨κ³μλ λ³μ μ΄λ¦μ λ±λ‘ν΄μ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μμ μ‘΄μ¬λ₯Ό μλ¦¬κ³ , μ΄κΈ°ν λ¨κ³μλ κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ μ묡μ μΌλ‘ undefined
λ₯Ό ν λΉνλ€. var
ν€μλλ μ΄λ¬ν μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλλ€.
λ³μ μ μΈμ μ€ν μμ κ³Ό νΈμ΄μ€ν
console.log(score); // undefined
var score; // λ³μ μ μΈλ¬Έ
μμ κ°μ΄ μ½λλ₯Ό μμ±νκ³ μ€ννλ©΄, λ³μ μ μΈλ¬Έ λ³΄λ€ λ³μλ₯Ό μ°Έμ‘°νλ μ½λκ° μμ μμμλ μ°Έμ‘° μλ¬(ReferenceError, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ±λ‘λ μλ³μλ₯Ό μ°Ύμ μ μμ λ λ°μνλ μλ¬)κ° λ°μνμ§ μκ³ , undefined
κ° μΆλ ₯λλ€.
κ·Έ μ΄μ λ λ³μ μ μΈμ΄ μμ€μ½λκ° νμ€μ© μ€νλλ μμ μΈ λ°νμμ΄ μλ, κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€. μλ°μ€ν¬λ¦½νΈ μμ§μ μμ€μ½λλ₯Ό νμ€μ© μ€ννκΈ° μμ, μμ€μ½λμ νκ° κ³Όμ μ κ±°μΉλ©΄μ μμ€μ½λλ₯Ό μ€νν μ€λΉλ₯Ό νλ€. νκ³Ό κ³Όμ μμ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έμ μ°Ύμλ΄ λ¨Όμ μ€ννλ€. κ·Έλ¦¬κ³ νκ³Ό κ³Όμ μ΄ λλ νμ λͺ¨λ μ μΈλ¬Έμ μ μΈν μμ€μ½λλ₯Ό μμ°¨μ μΌλ‘ μ€ννλ€.
μ΄λ κ² λ³μ μ μΈλ¬Έμ΄ λ§μΉ μ½λμ 맨 μλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ μ νΉμ§μ λ³μ νΈμ΄μ€ν
(variable hoisting)μ΄λΌ νλ€. λ³μ μ μΈ λΏλ§ μλλΌ, var
, let
, const
, function
, function*
, class
ν€μλλ₯Ό μ¬μ©ν΄ μ μΈνλ λͺ¨λ μλ³μλ νΈμ΄μ€ν
λλ€.\
κ°μ ν λΉ
λ³μμ κ°μ ν λΉ(λμ
, μ μ₯)ν λλ ν λΉ μ°μ°μ =
μ μ¬μ©νμ¬ μ°λ³μ κ°μ μ’λ³μ λ³μμ ν λΉνλ€.
var score; // λ³μ μ μΈ
score = 80; // κ°μ ν λΉ
var score = 80; // λ³μ μ μΈκ³Ό κ°μ ν λΉμ νλμ λ¬ΈμΌλ‘ λ¨μΆ νν
λ§μ§λ§ μ½λμ κ°μ΄ λ³μ μ μΈκ³Ό κ°μ ν λΉμ νλμ λ¬ΈμΌλ‘ ννν΄λ, μλ°μ€ν¬λ¦½νΈ μμ§μ 2κ°μ λ¬ΈμΌλ‘ λλμ΄ κ°κ° μ€ννλ€. λ°λΌμ λ³μ μ μΈμ λ°νμ μ΄μ μ λ¨Όμ μ€νλκ³ , κ°μ ν λΉμ λ°νμμ μ€νλλ€.
console.log(score);
var score = 80;
console.log(score);
μμ κ°μ μ½λμ κ²½μ°, μ€μ λ‘λ μλμ κ°μ΄ λμνκ² λλ€.
var score;
console.log(score); // undefined
score = 80;
console.log(score); // 80
λ³μμ 80
μ΄λΌλ κ°μ ν λΉν λλ undefined
κ° μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ 곡κ°μ λΉμ°κ³ κ·Έ 곡κ°μ 80
μ μ μ₯νλ κ²μ΄ μλλΌ, μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ κ·Έκ³³μ κ°μ μ μ₯νλ€.
score
μ 80
μ ν λΉν ν, μ΄μ κ°μΈ undefined
λ μ΄λ€ λ³μλ κ°μΌλ‘ κ°κ³ μμ§ μμΌλ―λ‘, λ μ΄μ νμνμ§ μλ€. μ΄λ¬ν λΆνμν κ°λ€μ κ°λΉμ§ μ½λ ν°μ μν΄ λ©λͺ¨λ¦¬μμ μλ ν΄μ λλ©°, λ©λͺ¨λ¦¬μμ μΈμ ν΄μ λ μ§λ μμΈ‘ν μ μλ€.
μ°Έκ³
- μ μ
- μ΄μ λͺ¨
- μΆν
- μν€λΆμ€
- μΆνμΌ
- 2020.09.25