μλ°μ€ν¬λ¦½νΈμ ν¨μ(
function
)μ λ€μν μ μ λ°©λ²κ³Ό μ€ν, μ¬μ© μ΄μ λ±μ λν λ΄μ©μ λλ€. π
νλ‘κ·Έλλ°μμ ν¨μ(function
)λ νλμ νΉλ³ν λͺ©μ μ μμ
μ μν΄ λ
립μ μΌλ‘ μ€κ³λ νλ‘κ·Έλ¨ μ½λμ μ§ν©μ΄λΌκ³ μ μν μ μλ€.
ν΄λΉ μ μλ₯Ό μ΄λ―Έμ§λ‘ νννλ©΄,
μμ κ°μ΄ ννλ μ μλλ°, μ΄λ―Έμ§μμ λμ¨ νΉμ μ λ ₯ κ°μ΄ ν¬μ λλ©΄ ν¨μλ₯Ό κ±°μ³ μλ‘μ΄ μΆλ ₯ κ°μ λ°ννλ κ²κ³Ό κ°μ μν μ νλ κ²μ΄λ€.
μλ°μ€ν¬λ¦½νΈμμ ν¨μλ μΌκΈ κ°μ²΄λ‘ μ·¨κΈλλ€.
first-class
) κ°μ²΄λλ€λ₯Έ κ°μ²΄λ€μ μΌλ°μ μΌλ‘ μ μ© κ°λ₯ν μ°μ°μ λͺ¨λ μ§μνλ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. μΌκΈ κ°μ²΄λ₯Ό μν 쑰건μ λ€μκ³Ό κ°λ€.
- λ³μ(
variable
)μ λ΄μ μ μλ€.- μΈμ(
parameter
)λ‘ μ λ¬ν μ μλ€.- λ°ν κ°(
return value
)μΌλ‘ μ λ¬ν μ μλ€.
π μΆμ²
1κΈ κ°μ²΄ : μν€λ°±κ³Ό μΌκΈ κ°μ²΄
1κΈ κ°μ²΄ : μ΅μ λ ¬λ github.io
μ μΌκΈ κ°μ²΄μ λν μ€λͺ μμ λμ¨ λ³μμ μΈμ κ·Έλ¦¬κ³ λ°ν κ°μ λν λ΄μ©μ΄ μ΄μ΄μ§λ μλ°μ€ν¬λ¦½νΈ ν¨μμ μ¬μ©λ²μμ λ€λ€μ§λ€.
function
) μ¬μ©λ²ν¨μλ λ³μκ° μ μΈκ³Ό ν λΉμ κ³Όμ μ΄ μλ―μ΄, λ§μ°¬κ°μ§λ‘ ν¨μλ μ μμ μ€νμ κ³Όμ μ΄ μλ€.
ν¨μλ₯Ό μ μνλ λ€μκ³Ό κ°μ λ°©λ²λ€μ΄ μλ€.
μ°μ ν¨μ μ μΈλ¬Έμ μΌλ°μ μΈ νλ‘κ·Έλλ° μΈμ΄μμ ν¨μ μ μΈκ³Ό λΉμ·ν νμμΌλ‘ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μ΄λ€.
function functionName(parameter) {
statements
}
μ ꡬ문μμ 보μ΄λ λ°μ κ°μ΄, function
μ μμ±νκ³ ν¨μ μ΄λ¦(functionName
)μ μμ±ν λ€μ μκ΄νΈ(()
) μμ 맀κ°λ³μ(parameter
)μ μ΄λ¦μ μμ±νλ€. κ·Έλ¦¬κ³ μ€κ΄νΈλ₯Ό μ΄μ΄ ν¨μλ₯Ό μ€ννμ λ μλλκ³ μ νλ ꡬ문(statements
)μ μμ±νλ€.
ν¨μ ννμμ ν¨μ μ μΈμμ ꡬ문과 λΉμ·νμ§λ§ λ³μ κ°μ ν¨μλ₯Ό μ μ₯νλ ννμ ꡬ문μ κ°λλ€.
let functionExpression = function functionName(parameter) {
statements
}
보μ΄λ λ°μ κ°μ΄ ν¨μ μ μΈλ¬Έκ³Ό λΉμ·ν νμμ΄μ§λ§ λ³μ(functionExpression
)λ₯Ό μ μΈνμ¬ ν΄λΉ λ³μμ κ°μΌλ‘ ν¨μ(fucntionName
)λ₯Ό ν λΉνλ€.
μμ κ°μ΄ ꡬ문 μμ± λ°©μμ μ°¨μ΄κ° μκΈ° λλ¬Έμ, λ λ°©μμ μ°¨μ΄μ μ΄ μ‘΄μ¬νλ€. κ·Έ μ°¨μ΄μ μ νΈμ΄μ€ν κ³Ό κ΄λ ¨λ μ¬νμΈλ°, νΈμ΄μ€ν κ΄λ ¨ λ΄μ©μ μ΄μ μλ°μ€ν¬λ¦½νΈ κΈ°λ³Έμ λν ν¬μ€νΈμ κΈ°μ¬νμΌλ κΈ°μ΅ μλλ©΄ λ€μ 보λκ±Έλ‘!
κ°λ¨ν λ§νμλ©΄, ν¨μ μ μΈλ¬Έμ νΈμ΄μ€ν μ μν₯μ λ°κ³ , ν¨μ ννμμ νΈμ΄μ€ν μ μν₯μ λ°μ§ μλλ€!
ν΄λΉ λ΄μ©μ μμλ₯Ό νμ©νμ¬ μμ보μ// ν¨μ μ μΈλ¬Έ sayHello(); // output : hello function sayHello(parameter) { console.log('hello') }
// ν¨μ ννμ sayHello(); // ReferenceError: sayHello is not defined let functionExpression = function sayHello(parameter) { console.log('hello') }
μ λ κ°μ§ ꡬ문μ 곡ν΅μ μΌλ‘ ν¨μ μ€ν μ΄ν μ μΈμ΄ μ΄λ£¨μ΄μ§λ ννμ΄λ€.
κ·Έλ¬λ ν¨μ μ μΈλ¬Έμ κ²½μ°μλ§ μ μμ μΌλ‘ ν¨μ μ€νμ΄ μλνλ κ²°κ³Όλ₯Ό νμΈν μ μλ€.
μ΄λ μμμ μΈκΈν λ°μ κ°μ΄ νΈμ΄μ€ν μ΄ ν¨μ μ μΈλ¬Έμ κ²½μ°μλ§ μΌμ΄λκΈ° λλ¬Έμ΄λ€.
λ³μλvar
λ νΈμ΄μ€ν μ΄ μΌμ΄λκΈ° λλ¬Έμ ν΄λΉ λ°©λ²μ μ§μνκ³let
κ³Όconst
λ°©μμ μ§ν₯ν΄μΌ νλ€.
λ§μ°¬κ°μ§λ‘, ν¨μλ νΈμ΄μ€ν μΌλ‘ μΈν΄ μ€μ½νκ° κΌ¬μ΄κ³ λ¬Έμ λ°μμ λν μ νν μμΈ λΆμμ΄ μ΄λ €μμ§λ λ¬Έμ μ λ±μ΄ λ°μνκΈ° λλ¬Έμ, λ체μ μΌλ‘ ν¨μ ννμμ μ§ν₯νλ€!
μ΄μ΄μ νμ΄ν ν¨μ(Arrow function
)λ λ¬Έλ²μ λ€μ΄κ°λ =>
ν΄λΉ λΆλΆμ΄ λ§μΉ νμ΄ν κ°μμ μ΄λ¦ μ§μ΄μ§ ν¨μ μ μ λ°©μμ΄λ€. νμ΄ν ν¨μμ λ¬Έλ²μ λ€μκ³Ό κ°λ€.
let arrowFunc = (parameter) => {
console.log('Hi')
}
arrowFunc() // output : Hi
λν, μμ λ κ°μ§ λ°©μκ³Όλ λ€λ₯΄κ² νμ΄ν ν¨μλ κ΅¬λ¬Έμ΄ μ§§κ³ , this
μ λ°μΈλ© λ°©μμμ μΌλ° ν¨μμ ꡬλΆλλ€.
this
μ λν κ°λ¨ν μ΄ν΄
this
λ₯Ό κ°λ¨νκ² μ€λͺ νμλ©΄, νμ¬ μ€ννκ³ μλ λ¬Έλ§₯μ΄ λ¬΄μμΈκ°μ λν λ΄μ©μ΄λ€.
λκ° νΈμΆνλλμ λν λ΄μ©μ΄ μ€μν λΆλΆμΈλ°, λΈλΌμ°μ μ½μμ κΈ°μ€μΌλ‘ κΈ°λ³Έμwindow
λ€.// in browser console.log(this); // output : window // strict λͺ¨λμΌ κ²½μ°, undefined λΌκ³ νλ€.
μ΄λ¬ν
this
κ°μ²΄ μμμλ κ²°κ³Ό κ°μ΄ λ¬λΌμ§λ€.var obj = { a: function() { console.log(this); }, }; obj.a(); // obj var a2 = obj.a; a2(); // window
μ΄λ κ°μ²΄ λ©μλ νΈμΆ μ,
this
λ₯Ό λ΄λΆμ μΌλ‘ λ°κΎΌλ€κ³ νλ€.
κ·Έλ¬λ μλμ κ²½μ°μλwindow
κ° μΆλ ₯λλ€. μλνλ©΄ μλμ κ²½μ°μλ λ³μμ κ°μ μ μ₯ν μκ° κ°μ²΄μ λ©μλκ° μλ μΌλ°μ μΈ ν¨μκ° λμκΈ° λλ¬Έμ λ μ΄μobj
μ λ©μλκ° μλ κ²μ΄λ€.
μ΄λ κ² μλ°μ€ν¬λ¦½νΈμthis
λ μ μ μΈ κ²μ΄ μλ λμ μΈ μ‘΄μ¬λ‘ μ¬κ²¨μ§λ€. μ΄λ μΌλ° ν¨μμthis
κ° λμ μ€μ½ν(dynamic scope
)μ ν΄λΉνλ€κ³ ν μ μλ€.
κ·Έλ¬λthis
λ λμ μ€μ½νκ° μλ μ μ μ€μ½ν(lexical scope
)μthis
λ₯Ό κ°λλ°, μ΄λ¬ν λΆλΆμμ μ°¨μ΄μ μ κ°μ§λ©° λ°μΈλ© λ°©μμ μ°¨μ΄λ₯Ό 보μΈλ€.
λμ μ€μ½νμ μ μ μ€μ½νμ λν λ΄μ©μ μλ κ°λ¨ν μ€λͺ ν κ²μ΄λ―λ‘ νμ νμ λͺ©μ°¨λ₯Ό λλ¬ μ΄λνμ!(ν΄λΉ λ΄μ©μ΄ λ무 κΈΈμ΄μ Έ λ³λλ‘ μμ± π)
λ°μΈλ©(
binding
) λ°©μμ μ°¨μ΄
λ©κ³ λ λ¨Ό κΈΈμ΄μλ€. μ΄μ λ°μΈλ©μ μ°¨μ΄μ λν΄ μμ보μ.
λμ μ€μ½νμ μ μ μ€μ½νμ λν μ΄ν΄λ₯Ό λ§μ³€λ€λ μ μ νμ κ°λ¨ν μ€λͺ νμλ©΄, νμ΄ν ν¨μλ ν¨μ μ μΈμ ν λthis
μ λ°μΈλ©νλ κ°μ²΄κ° μ μ μΌλ‘ κ²°μ λλ€λ μ μ΄λ€. μ΄ λ§μ νμ΄ν ν¨μλ μΈμ λ μμ μ€μ½νμthis
λ₯Ό κ°λ¦¬ν¨λ€λ κ²μ΄λ€.
μμ μ½λλ₯Ό 보면μ ν΄λΉ λ΄μ©μ μ΄ν΄ν΄λ³΄μ.function Person(){ this.age = 0; setInterval(() => { this.age++; // thisλ Person κ°μ²΄λ₯Ό μ°Έμ‘° console.log(this.age); }, 1000); // output : 1... 2... 3... } var p = new Person();
μ½λ°± ν¨μ(
callback function
)μ λν λ΄μ©μ μ μ λ―Έλ€λκ³ μ€μ½νμ λν λ΄μ©μ μ§μ€νμλ©΄, μμ κ°μ μν©μμsetInterval()
ν¨μμthis
λ μμ μ€μ½νμΈPerson
μ κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ ν΄λΉ κ°μΈ0
μ μ¬μ©νλ€.
μμμ μ κΉ μΈκΈν λ°μ κ°μ΄, νμ΄ν ν¨μλ κ°λ¨νκ² ν¨μ ꡬ문μ μμ±ν μ μλ€λ μ₯μ κ³Ό μμμ μ΄ν΄νthis
μ λ°μΈλ© λΆλΆμμ μμμ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ€λ μ μ΄ μ½λ°± ν¨μλ₯Ό μμ±νλ λ°μ μ©μ΄νλ€.
μ΄μ κ΄λ ¨λμ΄ μ½λ°± ν¨μμ κ΄λ ¨λ λ΄μ©κ³Ό νμ΄ν ν¨μλ‘ λ체 κ°λ₯ν κ²½μ°μ λν λ΄μ©μ λ³λλ‘ ν¬μ€ν μ ν μμ μ΄λ€. ππ μΆμ²
this
: μ λ‘μ΄λ κ°μΈλΈλ‘κ·Έ : μλ°μ€ν¬λ¦½νΈ thisλ 무μμΈκ°?
Arrow Function Binding
: Nesoy Blog : Javascript Arrow functionκ³Ό Bindingμ λν΄
Lexical Scope
μ Dynamic Scope
Lexical Scope
λ λ³μλ ν¨μκ° μ μΈλ κ³³μ λ΄μ© μ¬μ©νλ€λ μλ―Έμ΄κ³ ,Dynamic Scope
λ λ³μλ ν¨μκ° νΈμΆλ κ³³μ λ΄μ© μ¬μ©νλ€λ μλ―Έλ₯Ό κ°λλ€.
ν΄λΉ λ΄μ©μ μ΄λ»κ² ν΄μν μ μμκΉμ λν΄ μμ μ½λλ₯Ό 보면μ μμ보μfunction log() { console.log(name); } function wrapper() { var name = 'nero'; log(); } var name = 'zero'; wrapper(); // output : zero
ν΄λΉ μ½λλ λ κ°μ§ λ°©μμ λ°λΌ κ²°κ³Όκ° λ¬λΌμ§λ€.
μ°μ μλ°μ€ν¬λ¦½νΈλLexical Scope
μ λ°©μμ λ°λ₯΄κ³ ν¨μμ μ μΈμ λ°λΌ μμ μ€μ½νκ° κ²°μ λκΈ° λλ¬Έμ, μ½λλ₯Ό μ€ννλ©΄ κ²°κ³Ό κ°μΌλ‘zero
λ₯Ό λ°ννλ€.
μ΄λ μ μΈμ κΈ°μ€μΌλ‘ μ€μ½νλ₯Ό κ²°μ νκΈ° λλ¬Έμ, μ μΈνλ μκ° μκΈ° μ€μ½ν κΈ°μ€μΌλ‘ μμ μ€μ½νμ κ°μ₯ κ°κΉμ΄ κ³³μ λ³μλ₯Ό κ³ μ μ μΌλ‘ μ°Έμ‘°νλ€.
κ·Έλ κΈ° λλ¬Έμ, μ μ½λμ κ²½μ°μλwrapper()
ν¨μκ° μ μΈλ μμ μμ μμ μ€μ½νμ μ μ λ³μname
μ κ³ μ μ μΌλ‘ μ°Έμ‘°νκΈ° λλ¬Έμ, μ μΈ μnero
λΌλ κ°μ κ°μ§name
μ΄λΌλ μ§μ λ³μλ μΆλ ₯ κ²°κ³Όμ μν₯μ μ£Όμ§ μλλ€.
λ§μ½Dynamic Scope
λ°©μμ΄λΌλ©΄ νΈμΆμ κΈ°μ€μΌλ‘ μ€μ½νκ° κ²°μ λκΈ° λλ¬Έμ, ν¨μκ° μ μΈλκ³name
μ κ°μ΄ λ³κ²½λμμ§λ§wrapper()
ν¨μ λ΄μlog()
ν¨μκ° νΈμΆ λ μμ μμname
μ΄ μ¬μ μΈ λμ΄ μΆλ ₯ κ°μnero
λ‘ μΆλ ₯λ κ²μ΄λ€.
μ΄μ λλ‘ κ°λ¨νκ² κ° μ€μ½νμ λν΄ μ€λͺ ν μ μλ€. ππ μΆμ²
Lexical and Dynamic Scope
: Suyeon Bakλ medium : (JavaScript) Lexical Scope(Static Scope) and Dynamic Scope
Lexical and Dynamic Scope
: μ λ‘μ΄λ κ°μΈ λΈλ‘κ·Έ : ν¨μμ λ²μ(scope)
λν, ν¨μ μμ± λ°©μμμ ν¨μμ μ΄λ¦(μλ³μ : identifier
)μ μμ±νλ μ§μ μ 무μ λ°λΌ ꡬλΆλκΈ°λ νλ€.
μΌλ°μ μΌλ‘ ν¨μμ μ΄λ¦μ μ μνλ ν¨μ ννλ₯Ό κΈ°λͺ ν¨μλΌ νκ³ , λ°λλ‘ μ°Έμ‘°ν μλ³μ μμ΄ μ μΈλ ν¨μλ₯Ό μ΅λͺ ν¨μλΌ νλ€.
// κΈ°λͺ
ν¨μ
function sayHello1() {
console.log('Hello, World')
}
// μ΅λͺ
ν¨μ 1
let sayHello2 = function () {
console.log('Hello, World')
}
μμ κ°μ΄ κΈ°λͺ
ν¨μ(sayHello1()
)λ ν΄λΉ ν¨μλͺ
μ ν΅ν΄ μ μΈλμμ§λ§, μλ μ΅λͺ
ν¨μ(sayHello2()
)μ κ²½μ° ν¨μ ννμμ ꡬ문μΌλ‘ let
μ ν΅ν΄ λ³μμ ν λΉλμμΌλ©°, λ³μλͺ
μ ν΅ν΄ ꡬλΆν μ μλ€.
κ·Έλ¦¬κ³ κΈ°λͺ
ν¨μμ κ²½μ°μ μ μΈλ ν¨μλͺ
μ ν΅ν΄ μ€ννμ§λ§, μλ μ΅λͺ
ν¨μμ κ²½μ°μλ λ³μλͺ
μ ν΅ν΄ μ€ν κ°λ₯νλ€. μ μ΅λͺ
ν¨μμ κ²½μ°μλ μλμ κ°μ΄ μ€νλλ€.
sayHello2(); // κΈ°λͺ
ν¨μμ λμΌ
μ΄λ¬ν μ΅λͺ
ν¨μλ μ£Όλ‘ λ€λ₯Έ ν¨μμ λν μΈμλ‘ μ¬μ©νκ±°λ, ν΄λ‘μ (closure
)λ‘ μ¬μ©νλ κ²½μ°μ νμ©λλ€.
ν΄λ‘μ (
closure
)λ κ°λ¨νκ² λ§νμλ©΄ λ΄λΆ ν¨μκ° μΈλΆ ν¨μμ μ κ·Όν μ μλ κ²μ λν λ΄μ©μΈλ°, μ΄ν λ³λμ ν¬μ€ν μ μ§νν κ²μ΄λ€. κ·Έλλ μ§κΈ λΉμ₯ μ΄ν΄κ° νμνλ€λ©΄ μλ λ§ν¬λ‘!π μ°Έκ³
return
λ¬Έμ μν κ·Έλ¦¬κ³ ν¨μμμ μλλ ꡬ문μ λ°λΌ λμ€λ κ²°κ³Ό κ°μ λ°ννκΈ° μν΄μλ return
λ¬Έμ΄ μ‘΄μ¬ν΄μΌ νλ€. λ€μμ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄μ μμ보μ.
// return λ¬Έμ΄ μλ ν¨μ
function sayHello() {
let a = 'Hello, World'
}
console.log(sayHello()) // output : undefined
ν΄λΉ ν¨μμ κ²½μ° λ³μ a
μ 'Hello, World'
λΌλ λ¬Έμμ΄μ μ μ₯νμμ§λ§, μ΄λ₯Ό μ€ννμ¬ console
μ μΆλ ₯νλ undefined
λΌλ κ°μ λ°ννμλ€.
μ΄λ ν¨μμ κΈ°λ³Έ λ°ν κ°μ΄ undefined
λ‘ μ ν΄μ Έμκ³ , returtn
κ°μ μ€μ νμ§ μμκΈ°μ κΈ°λ³Έ κ°μ΄ μΆλ ₯λ κ²μ΄λ€.
ν΄λΉ μ½λμμ λ³μ a
μ κ°μ μΆλ ₯νκΈ° μν΄μ λ€μκ³Ό κ°μ΄ μμ ν μ μλ€.
// return λ¬Έμ΄ μλ ν¨μ
function sayHello() {
let a = 'Hello, World'
return a
}
console.log(sayHello()) // output : 'Hello, World'
μ μ½λμμ return
κ°μΌλ‘ a
λ₯Ό μ€μ νλ μλν λλ‘ Hello, World
λ₯Ό μΆλ ₯νλ κ²μ μ μ μμλ€.
ν΄λΉ κ²½μ°μλ λ¨μν console
μ μΆλ ₯νλ κ²μ΄ λͺ©μ μ΄μμ§λ§, return
μ ꡬ문μ λν κ°μ λ°ννλ€λ μ μμ μ€μν μμ μ€ νλμ΄λ€.
μ΄λ―Έ μμμλ λ§μ΄ λ΄€κ² μ§λ§, ν¨μμ μ€νμ λ€μκ³Ό κ°μ νμμΌλ‘ ν μ μλ€.
function sayHello() {
console.log('Hello, World')
}
sayHello(); // output : 'Hello, World'
μμ κ°μ΄ ν¨μλͺ
μ μκ΄νΈλ₯Ό λΆν μ€νν μ μλ€. λν μμμ μΈκΈν μ΅λͺ
ν¨μμ κ²½μ°μλ λ³μλͺ
μ νμ©νμ¬ ν¨μλ₯Ό μ μΈν μ μλ€.
κ·Έλ¦¬κ³ ν¨μ μ€νμ μ μΈ μ΄νμ λ³λλ‘ μ§ννλ κ² λ§κ³ λ, μ μΈκ³Ό λμμ μ¦μ ν¨μλ₯Ό μ€ννλ ν¨μλ μ‘΄μ¬νλ€.
// κΈ°λͺ
μ¦μ μ€ν ν¨μ 1
(function sayHello() {
console.log('Hello, World')
})(); // output : 'Hello, World'
// κΈ°λͺ
μ¦μ μ€ν ν¨μ 2
(function sayHello() {
console.log('Hello, World')
}()); // output : 'Hello, World'
// μ΅λͺ
μ¦μ μ€ν ν¨μ 1
(function () {
console.log('Hello, World')
})(); // output : 'Hello, World'
// μ΅λͺ
μ¦μ μ€ν ν¨μ 2
(function () {
console.log('Hello, World')
}()); // output : 'Hello, World'
μ λ€ κ°μ§ ν¨μ ꡬ문μ κΈ°λͺ
κ³Ό μ΅λͺ
ν¨μλ‘ κ΅¬λΆλκ³ κ΄νΈμ μμΉλ§ λ¬λΌμ§λ€. κ΄νΈμ μμΉκ° λ³κ²½λμ΄λ 보μλ€μνΌ κ²°κ³Ό κ°μ λμΌνλ€.
μ¦μ μ€ν ν¨μμ λ¬Έλ²μ λ§νμλ©΄ ν¨μλ₯Ό μμ±νκ³ ν¨μλ₯Ό μκ΄νΈλ‘ κ°μΌ λ€, μΈμλ₯Ό ν¬ν¨ν μκ΄νΈλ₯Ό λ€μκΈ μμ±ν΄μ£Όλ©΄ λλ€.
ν¨μ ννμμΌλ‘λ μ¦μ μ€ν ν¨μλ₯Ό μμ±νμμ§λ§, μ΅λͺ
κΈ°λͺ
κ΅¬λΆ μμ΄ μ€λ₯κ° λ°μνλ€.
(let sayHello = function () {
console.log('Hello, World')
})(); // SyntaxError: /src/index.js: Unexpected reserved word 'let' (2:1)
μμ κ°μ ꡬ문 μ€λ₯λ₯Ό λ°ννλ κ²μ μ μ μλ€.
μ΄λ κ² ν¨μμ λν΄ μ΄λ μ λ μμλ΄€μΌλ ν¨μλ₯Ό μ¬μ©νλ μ΄μ μ λν΄μλ κ°λ¨νκ² μμ보μ. ν΄λΉ λ΄μ©μ λν΄μλ μ¬μ¬μ©μ±, κ°λ μ±, λͺ¨λνλΌλ μΈ κ°μ§ ν€μλλ₯Ό ν΅ν΄ μ μ μλ€.
μ¬μ¬μ©μ±μ λ§κ·Έλλ‘ μ½λμ μ¬μ¬μ©μ λν κ²μ μλ―Ένλ€.
μλ₯Ό λ€μ΄, κ°μ κΈ°λ₯μ νλ κ΅¬λ¬Έμ΄ μμ§λ§ μ¬μ©λλ μΈμκ° λ¬λΌμ μΈμλ§λ€ κ°μ νμμ ꡬ문μ λ°λ³΅νλ€λ©΄ ν΄λΉ ꡬ문μ λ§€μ° κΈΈμ΄μ§ κ²μ΄λ©°, λΆνμν λ°λ³΅ μ
무 λν λμ΄λ κ²μ΄λ€.
// μΌμ ꡬκ°μμ 2μ λ°°μλ€μ λ°°μ΄μ λ΄λ ꡬ문
let two = []
for (let i = 1; i < 10; i++) {
two.push(i*2)
}
console.log(two) // output : [2, 4, 6 ... , 18]
// μΌμ ꡬκ°μμ 3μ λ°°μλ€μ λ°°μ΄μ λ΄λ ꡬ문
let three = []
for (let i = 1; i < 10; i++) {
two.push(i*3)
}
console.log(three) // output : [3, 6, 9 ... , 27]
ν΄λΉ κ²½μ°μ ν¨μλ₯Ό μ¬μ©νλ€λ©΄ κ°μ ν¨μμ μΈμλ§ λ€λ₯΄κ² λμ
νμ¬ μ½λλ₯Ό μ¬μ¬μ©ν μ μκ³ , κ°λ΅ν μ½λμ λ°λ³΅ μ
무μ κ°μλ₯Ό λλͺ¨ν μ μλ€.
function pushMultiple(n) {
let arr = []
for (let i = 1; i < 10; i++) {
arr.push(i*n)
}
return arr
}
console.log(pushMultiple(2)) // output : [2, 4, 6 ... , 18]
console.log(pushMultiple(3)) // output : [3, 6, 9 ... , 27]
κ°λ
μ± λν κ°λ¨νκ² λ§ν΄ μ½κΈ° μ¬μ΄ μ½λλ₯Ό μλ―Ένλ€. ν΄λΉ λ΄μ©λ μ¬μ¬μ©μ±μμ μ¬μ©ν μμλ₯Ό νμ©νμ¬ μ€λͺ
ν μ μλ€.
λ¨Όμ μ½κΈ° μ½λ€λ κ²μ 볡μ‘νμ§ μκ³ κ°λ΅νλ€λ μλ―Έκ° λ μ μλ€.
μ μμλ₯Ό 보면 ν¨μλ₯Ό μ¬μ©νμ§ μμ ꡬ문과 ν¨μλ₯Ό μ¬μ©ν κ΅¬λ¬Έμ΄ λ¨μν μ½λ μ€ κ°―μμ λΆλΆμμ μ°¨μ΄κ° μλ€λ κ²μ μ μ μλ€. μ½λκ° μ§§λ€λ κ²μ κ°λ΅νκ² κ°μ κΈ°λ₯μ μ€ννκ³ μ΄ν΄ν μ μλ€λ μ₯μ μ΄ λλ€.
λν, μ½κΈ° μ½λ€λ κ²μ ν΄μμ μ©μ΄νλ€λ μλ―Έλ ν¬ν¨λλ€.
μμ ν¨μλ₯Ό μ¬μ©νμ§ μκ³ μμ±ν ꡬ문μ κ²½μ°μλ μΆλ ₯νκΈ° μ΄μ μ ν΄λΉ λ³μλͺ
μ΄λ for
λ¬Έμ λ³΄κ³ μ§κ΄μ μΌλ‘ κ²°κ³Ό κ°μ μμΈ‘νκΈ° μ΄λ €μ΄ λΆλΆμ΄ μλ€.
κ·Έλ¬λ ν¨μλ₯Ό μ¬μ©ν ꡬ문μ pushMultiple()
μ΄λΌλ ν¨μλͺ
μμ ν΄λΉ ν¨μκ° λ°°μμ push()
λ©μλλ₯Ό νμ©νλ€λ λΆλΆμ λν΄ μ΄λ μ λ μ μΆν μ μκΈ°μ ν΄λΉ μ½λλ₯Ό μ½κ³ ν΄μνλ κ²μ μμ΄ μ μ©νλ€.
λͺ¨λνμ λν μ΄ν΄λ₯Ό μν΄ μ°μ λͺ¨λ(module
)μ λν κ°λ
μ κ°λ¨ν μ΄ν΄ν΄λ³΄μ.
λͺ¨λμ΄λ μννΈμ¨μ΄ μ€κ³μμ κΈ°λ₯ λ¨μλ‘ λΆν΄νκ³ μΆμν λμ΄ μ¬μ¬μ© λ° κ³΅μ κ°λ₯ν μμ€μΌλ‘ λ§λ€μ΄μ§ λ¨μλ₯Ό μλ―Ένλλ°, κ·Έλ¬ν μλ―Έμμ λͺ¨λνλ μνν νμ
μ λμμ£Όλ μν μ νλ€κ³ 보면 λλ€.
νμ κΈ°λ₯μ μ μνκ³ κ΅¬μ‘°μ μΈ λΆλΆμμ μλ‘μκ² μν₯μ μ£Όμ§ μλλ‘ μ½λλ₯Ό μμ±νμ¬, μ€λ₯κ° λ°μνμμ λ λλ²κΉ
μ κ³Όμ μμ νμ€ν μμΈ νμ
κ³Ό μ΄ν μννκ³ μ μν μμ λ° λ³΄μμ κ³Όμ μ ν μ μλ€λ λΆλΆμ΄ λͺ¨λνμ λν λ΄μ©μ ν¬ν¨λλ€.
ν¨μλ₯Ό μ¬μ©νλ μ΄μ : κ°λ° νμ λ¨κΈ°κΈ° : Javascript - ν¨μ(Function)λ₯Ό μ¬μ©νλ μ΄μ , λ¬Έλ²
module
: VincentGeranium Blog : λͺ¨λ(Module)μ λͺ¨λνλ?
μμ λ μ§ λ΄μ© 210806 λ―Έμμ±ν return
μ λν κ°λ μΆκ°