π μ€ν 컨ν μ€νΈ
μ€ν 컨ν
μ€νΈλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½λλ₯Ό μ€ννκΈ° μν΄μ νμλ‘ νλ μ 보(νκ²½)λ€μ΄ λ΄κ²¨μλ κ°μ²΄μ΄λ€. μ½λλ₯Ό μ€νν λ, νΉμ νκ²½μ μλ νκ²½ μ 보λ€μ λͺ¨μ μ€ν 컨ν
μ€νΈλ₯Ό μ½μ€νμ μμμ¬λ¦° ν μ€ννλ€.
μ¬κΈ°μ, νΉμ νκ²½μ΄λ μ μ 곡κ°μ΄ λ μλ μκ³ ν¨μ λ΄λΆμ 곡κ°μ΄ λ μλ μλ€. μ΄ λ, μ€μ½ν, μλ³μ, μ½λ μ€ν μμλ€μ κ΄λ¦¬κ° νμνλ° μ΄ λͺ¨λ κ²μ κ΄λ¦¬νκΈ° μν΄μ μ€ν 컨ν
μ€νΈκ° νμνλ€.
μ΄λ² κΈμμλ νΈμ΄μ€ν , μ€μ½νμ ν¨κ» μλ°μ€ν¬λ¦½νΈμ λμ μ리λ₯Ό λ΄κ³ μλ ν΅μ¬ κ°λ μΈ μ€ν 컨ν μ€νΈμ λν΄μ μμ보μ.
μμ€ μ½λμ νκ°μ μ€ν
μλ°μ€ν¬λ¦½νΈλ‘ μμ±ν λͺ¨λ μμ€ μ½λλ μ€νμ μμ νκ° κ³Όμ μ κ±°μΉλ©°, νκ°λ₯Ό ν΅ν΄μ μ€νμ μν μ€λΉλ₯Ό νλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό νκ°μ μ€ν λ κ°μ§ κ³Όμ μΌλ‘ λλμ΄μ μ²λ¦¬νλ€.
νκ° κ³Όμ μμλ
- μ€ν 컨ν μ€νΈλ₯Ό μμ±νλ€.
- λ³μ, ν¨μ λ±μ μ μΈλ¬Έλ§ λ¨Όμ μ€ννμ¬ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦)λ₯Ό ν€λ‘ μ€ν 컨ν μ€νΈ β λ μ컬 νκ²½ β νκ²½ λ μ½λμ λ±λ‘νλ€.
νκ° κ³Όμ μ΄ λλλ©΄ λΉλ‘μ μ½λκ° μ€νλλ λ°νμμ΄ μμλλ©°, μ μΈλ¬Έμ μ μΈν λλ¨Έμ§ μ½λλ₯Ό μμ°¨μ μΌλ‘ μ€ννλ€. μ΄ λ, μ€νμ νμν μ 보λ₯Ό νκ° κ³Όμ μμ μμ±λ μ€ν 컨ν μ€νΈλ₯Ό ν΅ν΄ μ»λλ€.
μ€ν 컨ν μ€νΈμ μν
var harryAge = 26
const address = "busan"
function bar() {
var harryAge = 20
console.log("ν΄λ¦¬μ λμ΄λ", harryAge, "μ
λλ€.")
function foo() {
var nickName = "harry"
console.log(nickName)
console.log(harryAge)
console.log(harryHobby) // Error!
}
foo()
}
bar()
console.log("ν΄λ¦¬μ λμ΄λ", harryAge, "μ
λλ€.")
μ μ½λμ μ€νλλ κ³Όμ μ κ°λ¨νκ² μ΄ν΄λ³΄λ©°, μ€ν 컨ν μ€νΈμ μν μ λν΄μ μμ보μ.
- μ μ μ½λ νκ°
μ μ½λλ₯Ό μ€ννκΈ° μ , νκ° κ³Όμ μ κ±°μΉλ©° μ μ μ½λλ₯Ό μ€ννκΈ° μν μ€λΉλ₯Ό νλ€. μ΄ λ, μ μ μ€ν 컨ν
μ€νΈκ° μ½μ€νμ λ΄κΈ΄λ€. μ μ μ½λμ λ³μ μ μΈλ¬Έκ³Ό ν¨μ μ μΈλ¬Έμ΄ λ¨Όμ μ€νλκ³ , μμ±λ μ μ λ³μ(harry)μ μ μν¨μ(bar)κ° μ μ μ€ν 컨ν
μ€νΈκ° κ΄λ¦¬νλ μ μ μ€μ½νμ λ±λ‘λλ€.
var ν€μλλ‘ μ μΈλ μ μ λ³μμ ν¨μ μ μΈλ¬Έμ μ μ κ°μ²΄(λΈλΌμ°μ μ κ²½μ° window, Node.jsμ κ²½μ° global)μ νλ‘νΌν°μ λ©μλκ° λλ€.
- μ μ μ½λ μ€ν
μ μ μ½λμ νκ°κ° λλ ν, μ½λκ° μ€νλλ λ°νμμ΄ μμλμ΄ μ μ μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ€. μ΄ λ, λ³μ κ°μ ν λΉνκ±°λ, ν¨μλ₯Ό νΈμΆνλ€. μ½λλ₯Ό μ€ννλ μ€, bar ν¨μκ° νΈμΆλμ΄ ν΄λΉ ν¨μλ₯Ό μ€ννκΈ° μν μ€λΉλ₯Ό νλ€.
ν¨μκ° νΈμΆλλ©΄ κΈ°μ‘΄μ μ€νμ€μ΄λ μ μ μ½λμ μ€νμ μΌμ μ€λ¨νλ€.
- bar ν¨μ μ½λ νκ°
bar ν¨μ λ΄λΆ μ½λλ₯Ό μ€ννκΈ° μ νκ° κ³Όμ μ κ±°μΉλ©° μ½λ μ€νμ μν μ€λΉλ₯Ό νλ€. μ¦, bar ν¨μμ νκ²½ μ 보λ€μ μμ§ν΄ μ€ν 컨ν μ€νΈλ₯Ό μμ±νκ³ μ½μ€νμ λ΄λλ€. 맀κ°λ³μ, μ§μ λ³μμ μ μΈλ¬Έμ΄ λ¨Όμ μ€νλκ³ ν¨μ μ€ν 컨ν μ€νΈκ° κ΄λ¦¬νλ μ§μ μ€μ½νμ λ±λ‘λλ€.
- bar ν¨μ μ½λ μ€ν, foo ν¨μ μ½λ νκ° λ° μ€ν
bar ν¨μ μ½λμ νκ°κ° λλ ν, ν¨μ λ΄λΆ μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ€. bar ν¨μ λ΄λΆ μ½λλ₯Ό μμ°¨μ μΌλ‘ μ€ννλ μ€, foo ν¨μκ° νΈμΆ λμλ€.
λ§μ°¬κ°μ§λ‘, κΈ°μ‘΄μ μ€νμ€μ΄λ bar ν¨μ λ΄λΆ μ½λμ μ€νμ μΌμ μ€λ¨νκ³ , foo ν¨μλ₯Ό μ€ννκΈ° μ νκ° κ³Όμ μ κ±°μΉλ©° μ½λ μ€νμ μν΄ μ€λΉνλ€. foo ν¨μμ νκ²½ μ 보λ€μ μμ§ν΄ μ€ν 컨ν
μ€νΈλ₯Ό μμ±νκ³ μ½μ€νμ λ΄λλ€. μ΄ ν μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ€.
- μ€ν μ’ λ£ λ° μ½μ€νμμ μ κ±°
foo ν¨μ μ½λ μ€νμ΄ μλ£λλ©΄, μ½μ€νμμ μ κ±°λλ€. μ΄ ν, bar ν¨μ λ΄λΆμμ foo ν¨μ νΈμΆλ‘ μΈν΄ μΌμ μ€λ¨λμλ μ§μ λΆν° λ€μ μ½λλ₯Ό μ€ννκ³ μλ£λλ©΄ μ½μ€νμμ μ κ±°λλ€.
μ μ μ½λμμλ bar ν¨μ νΈμΆλ‘ μΈν΄ μΌμ μ€λ¨λμλ μ§μ λΆν° λ€μ μ½λλ₯Ό μ€ννκ³ μ μμμ μ€νν μ½λκ° λμ΄μ λ¨μμμ§ μλ€λ©΄ μ μ μ€ν 컨ν μ€νΈ λν μ½μ€νμμ μ κ±°λμ΄ λͺ¨λ μ½λμ μ€νμ΄ μ’ λ£λλ€.
μ μμμμ νμΈν μ μλ―, μλ°μ€ν¬λ¦½νΈμμ μ½λλ₯Ό μ€ννλ €λ©΄ μ€μ½ν, μλ³μ, μ€ν μμ λ±μ κ΄λ¦¬κ° νμνλ©° μ΄ λͺ¨λ κ²μ κ΄λ¦¬νλ κ²μ΄ μ€ν 컨ν μ€νΈμ΄λ€. μ€ν 컨ν μ€νΈλ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦)μ κ΄λ¦¬νκ³ μ€μ½νμ μ½λ μ€ν μμ κ΄λ¦¬λ₯Ό μν΄ νμνλ©° λͺ¨λ μ½λλ μ€ν 컨ν μ€νΈλ₯Ό ν΅ν΄ κ΄λ¦¬λκ³ μ€νλλ€κ³ ν μ μλ€.
μλ³μ, μ€μ½νλ μ€ν 컨ν μ€νΈ λ΄λΆ λ μ컬 νκ²½μΌλ‘ κ΄λ¦¬νκ³ μ½λ μ€ν μμλ μ€ν 컨ν μ€νΈ μ€ν(μ½μ€ν)μΌλ‘ κ΄λ¦¬νλ€.
λ μ컬 νκ²½
λ μ컬 νκ²½μ μ€ν 컨ν
μ€νΈλ₯Ό ꡬμ±νλ νλμ λ¨μμ΄λ©°, λ€μ νκ²½ λ μ½λ, μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ‘ κ΅¬λΆλλ€.
λ μ컬 νκ²½μ ν€, κ°μ κ°λ κ°μ²΄ ννμ μ€μ½νλ₯Ό μμ±νμ¬ μλ³μλ₯Ό ν€λ‘ λ±λ‘νκ³ μλ³μμ λ°μΈλ© λ κ°μ κ΄λ¦¬νλ€. κ·Έλ¦¬κ³ λ μ컬 νκ²½μ μμ μ€μ½νμ λν μ°Έμ‘°λ₯Ό κΈ°λ‘νλ€.
μ¦, λ μ컬 νκ²½μ μ€μ½νλ₯Ό ꡬλΆνμ¬ μλ³μλ₯Ό λ±λ‘νκ³ κ΄λ¦¬ν μ μλ μ μ₯μ μν μ νλ€.
- νκ²½ λ μ½λ
μ€μ½νμ ν¬ν¨λ μλ³μλ₯Ό λ±λ‘νκ³ μλ³μμ λ°μΈλ© λ κ°μ μ μ₯νλ μ μ₯μμ΄λ€.
- μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°
μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ μμ μ€μ½νλ₯Ό κ°λ₯΄ν¨λ€. μμ μ€μ½νλ, μΈλΆ λ μ컬 νκ²½μ λ§νλ©° μ¦, ν΄λΉ μ€ν 컨ν μ€νΈλ₯Ό μμ±ν μμ€ μ½λλ₯Ό ν¬ν¨νλ μμ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μ λ§νλ€.
μ 리νμλ©΄, νκ²½ λ μ½λμ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘° λ₯Ό ν΅ν΄μ μ€μ½νλ₯Ό μμ±νκ³ κ΄λ¦¬ν μ μλ€.
μ€ν 컨ν μ€νΈμ μν λΆλΆμ μ½λ μμλ₯Ό ν΅ν΄ μ‘°κΈ λ μμ보μ. μ΄ κΈμμλ μ μ μ½λμ νκ° κ³Όμ μμ μμ±λλ μ μ μ€ν 컨ν μ€νΈμ λν΄μ λ€λ€λ³Έλ€.
μ μ μ€ν 컨ν μ€νΈ
- νκ²½ λ μ½μ ꡬμ±
var ν€μλμ ES6μ let, const ν€μλλ‘ μ μΈν μ μ λ³μλ₯Ό ꡬλΆνκΈ° μν΄μ μ μ νκ²½ λ μ½λλ λ€μ κ°μ²΄ νκ²½ λ μ½λμ μ μΈμ νκ²½ λ μ½λλ‘ κ΅¬λΆλλ€. κ°μ²΄ νκ²½ λ μ½λλ κΈ°μ‘΄μ μ μ κ°μ²΄κ° κ΄λ¦¬νλ var ν€μλλ‘ μ μΈν μ μ λ³μμ ν¨μ μ μΈλ¬ΈμΌλ‘ μ μν ν¨μ, νμ€ λΉνΈμΈ κ°μ²΄(Number, Math,,,)λ₯Ό κ΄λ¦¬νλ€.
λ°λ©΄, μ μΈμ νκ²½ λ μ½λλ let, const ν€μλλ‘ μ μΈν μ μ λ³μλ₯Ό κ΄λ¦¬νλ€. μ€ν 컨ν μ€νΈκ° μμ±λ λ ꡬμ±λλ νκ²½ λ μ½λλ₯Ό ν΅ν΄ νΉμ μ½λ νκ²½μ μ€μ½νλ₯Ό κ²°μ ν μ μλ€.
- μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘° μ νκΈ°
μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ νμ¬ νκ° μ€μΈ μμ€ μ½λλ₯Ό ν¬ν¨νλ μΈλΆ μμ€ μ½λμ λ μ컬 νκ²½, μ¦ μμ μ€μ½νλ₯Ό κ°λ₯΄ν¨λ€.
var harryAge = 26
function sayHi() {
console.log("hi")
}
(μμ κ°μ μ½λκ° μμ λ, μ μ μ½λλ sayHi ν¨μ μ½λλ₯Ό ν¬ν¨νλ€κ³ ν μ μλ€.)
μ΄λ₯Ό ν΅ν΄μ λ¨λ°©ν₯ λ§ν¬λ 리μ€νΈμΈ μ€μ½ν 체μΈμ ꡬνν μ μλ€. νμ¬ νκ°μ€μΈ μμ€ μ½λλ μ μ μ½λμ΄κ³ , μ μ μ½λλ₯Ό ν¬ν¨νλ μμ€ μ½λλ μμΌλ―λ‘ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°μ nullμ΄ ν λΉλλ€.
π νΈμ΄μ€ν μμ보기
μ€ν 컨ν
μ€νΈκ° μμ±λλ κ³Όμ κ³Ό λ΄λΆ ꡬμ±μ λν΄μ κ°λ΅νκ² μμ보μλ€.
μ΄μ μλ°μ€ν¬λ¦½νΈμ νΉμ§ μ€ νλμΈ νΈμ΄μ€ν
μ λν΄μ μμ보μ. νΈμ΄μ€ν
μ μ€ν 컨ν
μ€νΈ κ°λ
κ³Ό κ΄λ ¨μ΄ μλ κ°λ
μ΄λ€ :)
λ³μ νΈμ΄μ€ν
console.log(harryAge) // ?
var harryAge = 26
console.log(harryAge) // 26
μ μ½λλ₯Ό μ΄ν΄λ³΄μ. harryAge λ³μ(μλ³μ)μ 26 μ΄λΌλ μ«μ νμ
μ λ³μ κ°μ ν λΉνλ€. ν λΉ νμ μ½μμ harryAgeλ₯Ό μΆλ ₯ν΄λ³΄λ©΄ 26μ΄ μΆλ ₯λ κ²μ΄λ€.
κ·Έλ λ€λ©΄, harryAge λ³μμ μ μΈκ³Ό ν λΉ μ μ μ½μμ μΆλ ₯ν΄λ³΄λ©΄ μ΄λ€ κ²°κ³Όκ° μΆλ ₯λ κΉ?
console.log(harryAge) // undefined
var harryAge = 26
μ μΈκ³Ό ν λΉμ νκΈ° μ μ΄μ§λ§, μλ¬κ° λ°μνμ§ μκ³ undefined κ° μΆλ ₯λλ€. μ΄ νμμ νΈμ΄μ€ν
μ΄λΌκ³ νλ©°, νΈμ΄μ€ν
μ μ μΈλ¬Έμ΄ μ΅μλ¨μ λμ΄μ¬λ €μ§ λ―ν νμμ λ§νλ€.
μ΄ νμμ μ΄μ μ λν΄μ κ°λ¨νκ² μμ보μ.
νκ° κ³Όμ μμλ μ μΈλ¬Έλ§ λ¨Όμ μ€νλλ©°, μ΄ κ³Όμ μμ harryAgeλ undefinedλ‘ ν λΉλμ΄ νκ²½ λ μ½λμ λ±λ‘λλ€. λ μ΄μμ μ μΈλ¬Έμ΄ μμΌλ―λ‘ νκ° κ³Όμ μ΄ μ’ λ£λλ©°, μ½λκ° μ€νλλ€. 첫 λ²μ§Έ console.log λ₯Ό μ€νν λ, νκ²½ λ μ½λ λ΄λΆμ harryAgeκ° undefined κ°μ κ°μ§κ³ μμΌλ―λ‘ undefinedλ₯Ό μΆλ ₯νλ€.
μ΄ ν, harryAge λ³μ κ°μ΄ 26μΌλ‘ μ¬ν λΉλλ€.
λ λ²μ§Έ console.log λ₯Ό μ€νν λ, νκ²½ λ μ½λ λ΄λΆμ harryAgeκ° 26κ°μ κ°μ§κ³ μμΌλ―λ‘ 26μ μΆλ ₯νλ€. μμ κ°μ μ΄μ λ€λ‘ μΈν΄μ harryAge μ μΈλ¬Έμ΄ μ΅μλ¨μ λμ΄μ¬λ €μ§ κ² μ²λΌ 보μ΄λ νΈμ΄μ€ν μ΄ λ°μνλ κ²μ΄λ€.
κ·Έλ λ€λ©΄ let, const ν€μλλ‘ μ μΈν λ³μμλ λμΌνκ² undefinedκ° μΆλ ₯λ κΉ?
μΌμμ μ¬κ°μ§λ
μΌμμ μ¬κ°μ§λλ, letκ³Ό const ν€μλλ‘ λ³μλ₯Ό μ μΈνμ λ μ μΈ μ΄μ μ λ³μ(μλ³μ)λ₯Ό μ°Έμ‘°ν μ μλ μμμ λ§νλ€. μ°Έμ‘°ν μ μλ μ΄μ λ letκ³Ό const ν€μλλ‘ μ μΈν λ³μλ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λΆλ¦¬λμ΄ μ§νλκΈ° λλ¬Έμ΄λ€.
μ°μ , var ν€μλλ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλλ€.
μμ€ μ½λκ° μ€νλκΈ° μ , νκ° κ³Όμ μ κ±°μΉ λ
- μ μΈ : μλ°μ€ν¬λ¦½νΈ μμ§μκ² μλ³μ(harryAge)μ μ‘΄μ¬λ₯Ό μλ¦¬κ³ λ©λͺ¨λ¦¬ 곡κ°μ ν보ν ν μ°κ²°
- μ΄κΈ°ν : ν보ν λ©λͺ¨λ¦¬ 곡κ°μ μ묡μ μΌλ‘ undefined κ°μ ν λΉ
μ λ κ³Όμ μ΄ λμμ μ§νλλ€. λ°λΌμ, harryAge λ³μ(μλ³μ)λ₯Ό μ μΈ λ° ν λΉνκΈ° μ μλ undefined κ°μ μ°Έμ‘°ν μ μκ²λμ΄ μ½μμ μΆλ ₯λλ€.
λ°λ©΄, letκ³Ό const ν€μλλ μ μΈκ³Ό μ΄κΈ°ν λ¨κ³κ° λΆλ¦¬λμ΄ μ§νλλ€.
μμ€ μ½λκ° μ€νλκΈ° μ , νκ° κ³Όμ μ κ±°μΉ λ μ΄κΈ°ν λ¨κ³κ° μ§νλμ§ μμ κ°μ΄ λ°μΈλ© λμ§ μλλ€.
(<uninitialized>
λ κ°μ΄ λ°μΈλ© λμ§ μμμμ νννκΈ° μν μλ¨μ΄λ©°, <uninitialized>
κ°μ΄ λ°μΈλ© λ κ²μ΄ μλλ€.)
μ μ΄λ―Έμ§μ κ°μ΄, μ½λκ° μ€νλλ λ°νμμ μ€ν νλ¦μ΄ harryAge λ³μμ λ³μ κ° 26μ ν λΉνκΈ° μ κΉμ§ μΌμμ μ¬κ°μ§λμ λΉ μ§κ² λλ€.
μ£Όμν μ μ, letκ³Ό const ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν
μ΄ λ°μνλ κ²μ λ³ν¨μ΄ μλ€λ κ²μ΄λ€.
νΈμ΄μ€ν
μ΄ λ°μν΄μ λ³μ μ μΈλ¬Έμ΄ μ μΌ μ΅μλ¨μΌλ‘ λμ΄μ¬λ €μ§ κ² μ²λΌ λμνμ§λ§, λ³μ κ°μ ν λΉνκΈ° μ κΉμ§ μ°Έμ‘°ν μ μκΈ° λλ¬Έμ μΌμ§μ μ¬κ°μ§λμ λΉ μ§κ² λλ κ²μ΄λ€.
ν¨μ νΈμ΄μ€ν
- ν¨μ μ μΈλ¬Έ
sayHi()
function sayHi() {
console.log("μλ
, ν΄λ¦¬μΌ.")
}
μ΄λ²μ μ μ½λλ₯Ό νλ² μ΄ν΄λ³΄μ. ν¨μ μ μΈλ¬ΈμΌλ‘ sayHi ν¨μλ₯Ό μ μΈνκ³ , ν΄λΉ ν¨μλ₯Ό μ μΈνκΈ° μ νΈμΆνκ³ μλ€. μ μ½λλ₯Ό μ€ννλ©΄ μμΈκ° λ°μν΄μΌ ν κ² κ°μ§λ§, μ μμ μΌλ‘ νΈμΆλλ κ²μ νμΈν μ μλ€. κ·Έ μ΄μ λ, ν¨μ μ μΈλ¬Έμ ν΅ν΄ μμ±ν ν¨μλ μ μΈκ³Ό λμμ ν¨μκ° μμ±λμ΄ μ μΈ μ μλ ν¨μλ₯Ό μ¬μ©ν μ μκΈ° λλ¬Έμ΄λ€.
μ μ΄λ―Έμ§μ κ°μ΄, μ μ μ½λλ₯Ό μ€ννκΈ° μ νκ° κ³Όμ μμ ν¨μ μ μΈλ¬Έμ ν΅ν΄ μμ±ν sayHi ν¨μλ μ μ κ°μ²΄μ λ©μλκ° λμ΄ κ°μ²΄ νκ²½ λ μ½λμ λ±λ‘λλ€.
λ°λΌμ, μμΈκ° λ°μνμ§ μκ³ μ μμ μΌλ‘ νΈμΆλλ€.
- ν¨μ ννμ
sayHi()
var sayHi = function () {
console.log("μλ
, ν΄λ¦¬μΌ.")
}
μλ°μ€ν¬λ¦½νΈμμλ λ³μμ ν¨μλ₯Ό λ΄μ μ μλ€. (μλ°μ€ν¬ν¬λ¦½νΈμμ ν¨μλ μΌκΈ κ°μ²΄μ΄κΈ° λλ¬Έμ κ°λ₯νλ€.)
μ μ½λμμλ var ν€μλλ₯Ό μ¬μ©ν λ³μμ sayHi λ³μλ₯Ό λ΄μλ€.
μ μ½λλ₯Ό μ€ννλ©΄ μμΈκ° λ°μνλ κ²μ νμΈν μ μλ€. κ·Έ μ΄μ λ, μ μ μ½λ νκ° κ³Όμ μμ var ν€μλλ₯Ό μ¬μ©ν λ³μλ κ°μ²΄ νκ²½ λ μ½λμ undefined κ°μΌλ‘ λ±λ‘λλλ°, sayHi λ³μμ ν¨μλ₯Ό ν λΉνκΈ° μ νΈμΆνλ €κ³ νκΈ° λλ¬Έμ΄λ€.
ν¨μ ννμμ λ³μ νΈμ΄μ€ν κ³Ό λμΌνκ² λμνλ€.
TypeError: sayHi is not a function
λ°λΌμ μμ κ°μ μμΈκ° λ°μνλ€.
π μ€μ½ν μ²΄μΈ μμ보기
μ μ½λ μμμμ foo ν¨μκ° μ€νλ λ,
nickName
, harryAge
, harryHobby
μλ³μλ₯Ό μ°Ύμκ°λ κ³Όμ μ ν΅ν΄ μ€μ½ν 체μΈμ λν΄μ μ’ λ μμ보μ.
var harryAge = 26
const address = "busan"
function bar() {
var harryAge = 20
console.log("ν΄λ¦¬μ λμ΄λ", harryAge, "μ
λλ€.")
function foo() {
var nickName = "harry"
console.log(nickName)
console.log(harryAge)
console.log(harryHobby)
}
foo()
}
bar()
console.log("ν΄λ¦¬μ λμ΄λ", harryAge, "μ
λλ€.")
foo ν¨μκ° νΈμΆλλ©΄, ν¨μ μ½λκ° μ€νλκΈ° μ μ°μ νκ° κ³Όμ μ ν΅ν΄μ ν¨μ μ€ν 컨ν μ€νΈκ° μμ±λλ€.
ν¨μ μ€ν 컨ν μ€νΈκ° μμ±λ λ, μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘° κ° κ²°μ λμ΄μΌ νλ©°, foo ν¨μλ₯Ό νκ°νλ μμ μ μ€ν μ€μΈ 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ μ°Έμ‘°κ²°μ λλ€. μ¦, νμ¬ νκ° μ€μΈ foo ν¨μλ₯Ό ν¬ν¨νλ bar ν¨μ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ μ°Έμ‘°κ° κ²°μ λλ€.
μ΄ ν, μμ°¨μ μΌλ‘ foo ν¨μ λ΄λΆ μ½λλ₯Ό μ€ννλ€.
console.log(nickName)
console.log(harryAge)
console.log(harryHobby)
console.log κ° μ€νλλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ΄λ€ μλ³μλ₯Ό μΆλ ₯ν μ§ κ²°μ ν΄μΌ νλ€. μλ³μλ₯Ό κ²°μ νκΈ° μν΄μ μ€ν μ€μΈ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μμ μλ³μλ₯Ό κ²μνκΈ° μμνλ€.
- nickName
νμ¬ μ€νμ€μΈ 컨ν μ€νΈλ foo ν¨μμ μ€ν 컨ν μ€νΈ μ΄λ―λ‘, ν΄λΉ 컨ν μ€νΈμ λ μ컬 νκ²½μμ nickName μ μ°ΎκΈ° μμνλ€. νμ¬ μ€νμ€μΈ 컨ν μ€νΈμμ μ°Ύμ μ μμΌλ―λ‘ μλ³μμ κ°(βharryβ)μ λ°μΈλ©νκ³ μΆλ ₯νλ€.
- harryAge
harryAge λ foo ν¨μμ μ€ν 컨ν μ€νΈμ μμΌλ―λ‘ μμ λ μ컬 νκ²½μΈ bar ν¨μ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ μ΄λν΄μ μλ³μλ₯Ό κ²μνλ€. bar ν¨μμ μ€ν 컨ν μ€νΈμμ μ°Ύμ μ μμΌλ―λ‘ μλ³μμ κ°(20)μ λ°μΈλ©νκ³ μΆλ ₯νλ€. μ μ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μλ λμΌν harryAge μλ³μκ° μμ§λ§, μλ°μ€ν¬λ¦½νΈ μμ§μ κ°μ₯ λ¨Όμ λ°κ²¬λ μλ³μμλ§ μ κ·Όνλ€.
μ΄ μν©μ²λΌ, λμΌν μλ³μλ‘ μΈν΄ μμ μ€μ½ν(μ μ)μμ μ μΈλ μλ³μμ κ°μ΄ κ°λ €μ§λ νμμ λ³μ μλμμ΄λΌ νλ€.
- harryHobby
harryHobby λ foo ν¨μμ μ€ν 컨ν μ€νΈμ μμΌλ―λ‘ μμ λ μ컬 νκ²½μΈ bar ν¨μ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ μ΄λν΄μ μλ³μλ₯Ό κ²μνλ€. bar ν¨μμ μ€ν 컨ν μ€νΈμμλ μ°Ύμ μ μμΌλ―λ‘ bar ν¨μμ μμ λ μ컬 νκ²½μΈ μ μ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ μ΄λν΄μ μλ³μλ₯Ό κ²μνλ€.
μ μ λ μ컬 νκ²½μμλ μ°Ύμ μ μκ³ , λ μ΄μ μ΄λν΄μ κ²μν μ μλ λ μ컬 νκ²½μ΄ μ‘΄μ¬νμ§ μμΌλ―λ‘ Reference Error κ° λ°μνκ² λλ€.
μ 3κ°μ§ μμμ²λΌ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μλ³μλ₯Ό μ°Ύμκ°λ κ³Όμ μ μ€μ½ν 체μ΄λμ΄λΌκ³ νλ©°, μ΄ κ³Όμ μμ νμ©λλ μ€μ½ν(λ μ컬 νκ²½)λ€μ μ°κ²°λ¦¬μ€νΈλ₯Ό μ€μ½ν 체μΈμ΄λΌκ³ νλ€.
π μ 리
- μ€ν 컨ν μ€νΈλ, μλ°μ€λ¦½νΈ μμ§μ΄ μ½λλ₯Ό μ€ννκΈ° μν΄μ νμλ‘ νλ μ 보(νκ²½)λ€μ΄ λ΄κ²¨μλ κ°μ²΄μ΄λ€.
- λ μ컬 νκ²½μ΄λ, μ€ν 컨ν μ€νΈλ₯Ό ꡬμ±νλ νλμ λ¨μμ΄λ©°, λ€μ νκ²½ λ μ½λ, μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ‘ κ΅¬λΆλλ€.
- λ μ컬 νκ²½μ ν€, κ°μ κ°λ κ°μ²΄ ννμ μ€μ½ν(νκ²½ λ μ½λ)λ₯Ό μμ±νκ³ , μμ μ€μ½νμ λν μ°Έμ‘°(μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°)λ₯Ό κΈ°λ‘νλ€.
- νΈμ΄μ€ν μ μ μΈλ¬Έμ΄ μ΅μλ¨μ λμ΄μ¬λ €μ§ λ―ν νμμ λ§νλ©°, μμ€ μ½λλ₯Ό μ€ννκΈ° μ νκ°λ₯Ό ν΅ν΄ μ€ν 컨ν μ€νΈλ₯Ό μμ±νκΈ° λλ¬Έμ μκΈ°λ νμμΌλ‘ λ³Ό μ μλ€.
- var ν€μλλ‘ μ μΈν λ³μλ λ³μμ μ μΈκ³Ό μ΄κΈ°νκ° λμμ μ§νλλ©°, letκ³Ό const ν€μλλ‘ μ μΈν λ³μλ λ³μμ μ μΈκ³Ό μ΄κΈ°νκ° λΆλ¦¬λμ΄ μ§νλλ€.
- μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μλ³μλ₯Ό κ²°μ ν΄κ°λ κ³Όμ μ μ€μ½ν 체μ΄λμ΄λΌκ³ νλ©°, μ΄ κ³Όμ μμ νμ©λλ μ€μ½ν(λ μ컬 νκ²½)λ€μ μ°κ²°λ¦¬μ€νΈλ₯Ό μ€μ½ν 체μΈμ΄λΌκ³ νλ€.