September 16, 2020
var x = 30 // μ μλ³μ x μ μΈ, μΌλ¨μ 30μ΄λ€.
function get() {
return x // get()ν¨μ μ μΈ, κ·Όλ° λ€μ΄μ€λ νλΌλ―Έν°κ° μλ€.
}
var result = get(20) // get ν¨μμ 20μ΄λΌλ μΈμλ₯Ό νμμ μ€ννλ € νλ€.
λ§μ§λ§ μ€μ get(20) ν¨μλ₯Ό μ€νν κ²°κ³Όλ₯Ό result μ λ΄λλ€. getν¨μ λ΄ 20μ΄λΌλ μΈμκ° λ΄κΈ°λλ° μμ½κ²λ μ μΈλ ν¨μ function get () μ μμ λ°λ νλΌλ―Έν°κ° μλ€.
μ£Όκ³ μΆμ΄λ λ°μ§ λͺ»νλ μκ°μ΄λ€.
get() ν¨μλ x λ₯Ό 리ν΄νλλ°, μ΄ λ xλ λ°κΉ₯μ μ μ λ³μ x λ₯Ό μ°Έμ‘°νλ―λ‘ μ λ΅μ 30μ΄λ€.
var x = 30
function get(x) {
return x
}
var result = get(20)
1λ² λ¬Έμ μλ λ€λ₯΄κ² 맨 μλ«μ€μμ get(20) μΌλ‘ μΈμ 20μ ν¨μ get μ 보λ΄λ €λλ° λ°μ μ μλ νλΌλ―Έν° x κ° μλ€.
return x; μ΄λ€. μ΄ λ, x λ λ°©κΈ λ°μ 20μ κ·Έλλ‘ κ°λ€ μ΄λ€. 1λ²μμλ μ μλ³μ x λ₯Ό μ°Έμ‘° νμ§λ§, 곡λΆνλ―μ΄ μ°Έμ‘°νλλ° μμ΄μ μ μλ³μ λ³΄λ€ μ§μλ³μκ° μ°μ μμκ° λλ€.
ν΄μ result λ 20.
var x = 30 // μ μ λ³μ, μΌλ¨ x λ 30μ΄ ν λΉλ¨.
function get() {
return x // parameter κ° μλ get() ν¨μλ x λ₯Ό 리ν΄, μ΄μνλΌλ©΄ get ν¨μμ μ€νκ²°κ³Όλ 30.
}
function set(value) {
// value λΌλ νλΌλ―Έν°λ₯Ό λ°κ³ curly bracket μμμ value λ₯Ό μ°Έμ‘°,
var x = value // κ·Έ value λ₯Ό x μ μ¬μ μΈ.
}
set(10) // μ΄ λ x λ 10 μ΄ λ¨.
var result = get(20) // μμ set(10) ν¨μμλ μκ΄μμ΄ result λ 30. 1λ² λ¬Έμ μ μ μ¬ν μν©μ΄λ€.
var x = 30
function get() {
return x
}
function set(value) {
x = value
}
set(10)
var result = get(20)
μ΄ κ²½μ°λ 3λ² λ¬Έμ λ λκ°λ€ νλ©΄μ ν¨μ get μ 20μ λ°μμ€ νλΌλ―Έν°κ° μμΌλ return νλ x λ μ μ λ³μμΈ 30μ μ°Έμ‘°νκ² μ§ μ νλ©΄ νλ Έλ€.
μ΄μ λ λ°λ‘ set(10); ν¨μμ μ€νμ μλ€.
set(10) μ€νμΌλ‘ 10μ΄λΌλ μΈμκ° ν¨μ set μ value νλΌλ―Έν°μ ν λΉμ΄ λλ€.
μ€μν κ²μ, λ€μμ΄λ€.
function set(value) {
x = value // ν¨μ λ΄ value λ μ§μ λ²μλ₯Ό μ°Έμ‘°ν΄μ ν¨μ μ€νμΌλ‘ λ€μ΄μ¨ μΈμ 10μ λ³Έλ€.
} // κ·Όλ° κ·Έ 10 μ x μ μ¬ν λΉ νκ³ μλ€. μ΄λ¬λ©΄ μ μ λ³μκ° x κ° 10μΌλ‘ λ°λλ€.
μ΅μ’ μ μΌλ‘ result 10μ 리ν΄νκ² λλ€. μ λΆν° μλλ‘ μ€νλλ©° μ½λλ₯Ό μ½μ΄λ€μ΄λ κ±° κ°λ€.
var x = 30
function get(x) {
return x
}
function set(value) {
x = value // set(10) μ€νμΌλ‘ 10μ΄ x μ μ¬ν λΉ. μ΄μ μ μ λ³μ x λ 10.
}
set(10)
var result = get(20) // get(20) μ€νμΌλ‘ μΈμ 20μ΄ function get (x), x μ ν λΉλ¨. λ°μλ¨Ήμμ.
result λ κ·Έλμ 20.
var x = 10
function add(y) {
// 5. y νλΌλ―Έν°λ‘ 5λ₯Ό λ°μ λ¨Ήμλ€.
return x + y // 6. y λ μ§μλ³μ 5λ₯Ό μ°Έκ³ νκ³ , x λ μ°Έκ³ ν κ² μμ΄μ μ μ x 10μ μ°Έμ‘°νλ€.
} // 7. add(5) λ 5 + 10, 15 λ₯Ό 리ν΄νκ³ μλ€.
function strangeAdd(x) {
// 2. x νλΌλ―Έν°λ‘ 5λ₯Ό λ°μλ¨Ήμλ€.
return add(x) + add(x) // 3. μ, μ΅μ’
κ²°κ³Όλ add(5) + add(5) λ₯Ό λλ €μ£Όκ² νλꡬλ.
} // 4. function add ν¨μμ μΈμ 5λ₯Ό νμ 보λ΄λ,
var result = strangeAdd(5) // 1. strangeAdd ν¨μμ μΈμ 5λ₯Ό νμ 보λΈλ€.
add(5) + add(5) = 30 μ΄ result μ κ²°κ³Ό κ°μ΄ λλ€.
var x = 10
function outer() {
var x = 20
function inner() {
return x
}
return inner()
}
var result = outer()
outer() νμ λ, function inner () μ λͺ¨μ΅λ§ 보μ΄λ κ² μλλΌ μμ inner ν¨μκ° μ€ν λμ΄ λ²λ¦°λ€.
inner ν¨μλ x λ₯Ό 리ν΄νλ€. κ·Όλ° κ·Έ x λ₯Ό μ΄λμ μ°Έμ‘°νλλ©΄, μ€μ½ν λ²μΉμ μν΄ μ§μ λ³μμΈ,
var x = 20; μ λ¨Όμ μ°Έμ‘°ν΄μ κ°μ§κ³ μ¨λ€.
κ·Έλμ 20μ 리ν΄νκ³ result λ 20μ΄λ€.
var x = 10
function outer() {
var x = 20 // (4λ²μ§Έ). μ΄μ μ΄ λ³μλ 30μΌλ‘ λ°λλλ€.
function inner() {
x = x + 10 // (3λ²μ§Έ). μ¬κΈ°μ xλ λ°λ‘ μ μ§μλ³μ x = 20 μ κ°μ Έμμ, + 10 μ ν κ° 30μ μ§μ λ³μ xμ μ¬ν λΉ ν©λλ€.
return x // (5λ²μ§Έ). 리ν΄λλ x λ λ°λ‘ μ μ§μ λ³μλ‘ λ³κ²½λ 30μ μ°Έμ‘°νλ―λ‘ 30μ 리ν΄νκ³ .
}
inner() // (1λ²μ§Έ). inner() κ° μλλΌ return inner() κ° λ§λκ² μλμ§ κΆκΈν©λλ€.
}
outer() // (2λ²μ§Έ). outer() μ μ€νμΌλ‘ inner() ν¨μλ₯Ό μ€νμν΅λλ€.
var result = x // (8λ²μ§Έ) κ°λΆ x λ ν¨μ λ΄μ λ³μλ₯Ό μ°Έμ‘°ν μ μμ΅λλ€. λμ μ μ λ³μ x = 10 μ λ°λΌλ³΄λ―λ‘ 10 μ΄ λ©λλ€.
κ·Έλμ result λ 10μ΄κΈ΄ νλ° μ inner(); μμ return μ΄ μλμ§ κΆκΈν΄μ μ§λ¬Έμ μ¬λ Έλ€.
8λ² λ¬Έμ μ λν λ΅λ³μ κ·Έλλ‘ μ΄μ΄ λΆμ¬ λ³Έλ€.
μ¬κΈ°μ inner()λ₯Ό return ν΄ μ£Όμ§ μμ κ²μ ν¨μ μ λλ€. innerλ€μ κ΄νΈλ₯Ό μ΄κ³ λ«μμ ν΅ν΄μ inner ν¨μλ μ€νμ μμΌμ£ΌμκΈ° λλ¬Έμ inner()μ 30μ΄ λ κ²μ λλ€.
νμ§λ§ μ΄ μ€νν inner()λ₯Ό returnμ ν΄μ£Όμ§ μκ³ μκΈ° λλ¬Έμ 30μ΄λΌλ κ°μ outer ν¨μ μμμ λμ€μ§ λͺ»νκ³ κ°νμκ² λ©λλ€.
μ¦, μ£Όμμ 2λ²μ§Έ λ₯Ό ν΅ν΄ outer() ν¨μλ₯Ό μ€νμν€κΈ°λ νμ§λ§, returnμ ν΄μ£Όμ§ μκ³ μκΈ° λλ¬Έμ outer ν¨μλ undefinedλ₯Ό return ν©λλ€.
μ¦, μ΄ λ¬Έμ λ₯Ό ν΅ν΄ λ§νκ³ μ νλ λ°λ outer ν¨μ λ΄μ x(μ§μ λ³μ)μ outer ν¨μ λ°μ x(μ μ λ³μ)λ λͺ μΉμ κ°μ§λ§ μ ν λ€λ₯Έ λ³μλΌλ μ μ μ΄ν΄νκΈ° μν λ¬Έμ μ λλ€!
μ€μΌ! μ΄ν΄μλ£!
var x = 10 // 7. μ΄μ μ μ λ³μλ 20.
function outer() {
x = 20 // 6. outer() ν¨μμ μ€νμΌλ‘ μ μ λ³μ x μ κ°μ μ¬ν λΉ νλ€.
function inner() {
var x = x + 20 // 2. x λ λ°λ‘ μ x = 20 μ μ°Έκ³ ν΄μ, inner ν¨μμ xλ₯Ό μ¬μ μΈ νλ€.
return x // 3. 40μ 리ν΄νλ€.
}
inner()
}
outer() // 1. inner() ν¨μλ₯Ό μ€ννκΈ° μμ.
// 5. 40μ 리ν΄νλ€.
var result = x // 8. μ μ λ³μ 20μ κ°μ Έμ€λ―λ‘ result λ 20.
μ΄ κ²½μ°μλ result κ°μ΄ λ§μκΈ΄ νμ§λ§,
outer ν¨μμμ 40μ λ°ννλ κ² μλ NaN μ λ°ννλ€. μμΌκΉ?
var x = 10
function outer() {
x = 20
function inner() {
var x = x + 20
return x
}
return inner()
}
outer()
NaN
let result = x
result
20
μμΌκΉ? μ΄κ²λ ν¬ν λ°μ€ν¬μ μ¬λ €λ³΄μλ€.
var x = 10 // μ μ λ³μκ° 20μΌλ‘ μ¬ν λΉ λ¨.
function outer() {
x = 20
function inner() {
x = x + 20 // λ°λ‘ μ x μμ 20μ κ°μ Έμμ x κ° 40μ΄ λ κ²μ μ μ λ³μμ λ€μ 40μΌλ‘ ν λΉ.
}
inner()
}
outer()
var result = x // μ μλ³μ 40μ result μ ν λΉ.
result λ 40.