μ½λ μ¬μ¬μ©
,μ μ§λ³΄μμ νΈμμ±
,μ½λμ κ°λ μ±
μλ°μ€ν¬λ¦½νΈ μμ§μ
μ½λμ λ¬Έλ§₯ μ λ°λΌ
λμΌν ν¨μ 리ν°λ΄μ ν¨μ ννμ or ν¨μ μ μΈλ¬ΈμΌλ‘ ν΄μνλ κ²½μ°κ° μλ€.
-
{ }
μμ½λ λΈλ‘
μΌ μλ μκ³ ,κ°μ²΄ 리ν°λ΄
μΌ μλ μλ€. => { }μ μ€μμ νν-
{ }
μ΄λ¨λ
μΌλ‘ μ‘΄μ¬ β μλ°μ€ν¬λ¦½νΈ μμ§μ{ } μ λΈλ‘λ¬ΈμΌλ‘ ν΄μ
-
{ }
μ΄κ°μΌλ‘ νκ°
λμ΄μΌ ν λ¬Έλ§₯μμνΌμ°μ°μ
λ‘ μ¬μ©λ κ²½μ° => μλ°μ€ν¬λ¦½νΈ μμ§μ{ }μ κ°μ²΄ 리ν°λ΄λ‘ ν΄μ
-
-
- ν¨μ 리ν°λ΄ μ΄
λ¨λ
μΌλ‘ μ¬μ©λλ€. βν¨μ μ μΈλ¬Έ
μΌλ‘ ν΄μ ν¨μ 리ν°λ΄
μ΄ κ°μΌλ‘ νκ°λμ΄μΌ νλ(λ³μμ ν λΉ or νΌμ°μ°μλ‘..) λ¬Έλ§₯ βν¨μ 리ν°λ΄ ννμ
μΌλ‘ ν΄μ
- ν¨μ 리ν°λ΄ μ΄
μ΄ λμ ν¨μκ° μμ±λλ κ²μ λμΌ, λ€λ§ νΈμΆμμ μ°¨μ΄
κ° μλ€.
// 1.ν¨μ μ μΈλ¬ΈμΌλ‘ ν¨μ νΈμΆ
function foo() {
console.log("foo"); // foo
}
foo();
// 2οΈ. ν¨μ 리ν°λ΄ ννμμΌλ‘ ν¨μ νΈμΆ
(function bar() {
console.log("bar"); // ReferenceError: bar is not defined
});
bar();
π‘ ν¨μ 리ν°λ΄ ννμ μμ
ν¨μλ₯Ό κ°λ₯΄ν€λμλ³μκ° μλ€
, ν¨μ λͺΈμ²΄ μΈλΆμμλν¨μ μ΄λ¦μΌλ‘ ν¨μλ₯Ό νΈμΆν μ μλ€
.
π‘ ν¨μ ννμ μμ
μλ°μ€ν¬λ¦½νΈμμ§μ ν¨μλ₯Ό νΈμΆνκΈ° μν΄ ν¨μ μ΄λ¦κ³Ό λμΌν μ΄λ¦μ μλ³μλ₯Ό μ묡μ μΌλ‘ μμ±νλ€.
>
function add(x, y) {
return x + y;
}
// μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μλ³μκ° μ μΈλ¨
var add = function add(x, y) {
return x + y;
};
π‘ μλ°μ€ν¬λ¦½νΈ μμ§μ "ν¨μ μ μΈλ¬Έ"μ "ν¨μ ννμμΌλ‘ λ³ν" β "ν¨μ κ°μ²΄λ₯Ό μμ±"
- ν¨μ :
κ°
,νλ‘νΌν° κ°
,λ°°μ΄μ μμ
κ° λ μ μλ€. (==μΌκΈκ°μ²΄
)
console.log(add1); // μ μ
console.log(add2); // undefined
//ν¨μ μ μΈλ¬Έ
function add1(x, y) {
return x + y;
}
//ν¨μ ννμ add2 μ undefinedκ°μ΄ λ€μ΄κ°λ©° νΈμ΄μ€ν
λ¨
var add2 = function (x, y) {
return x + y;
};
π‘ ν¨μ μ μΈλ¬Έ : λ°νμ μ΄μ μ ν¨μ `κ°μ²΄ λ¨Όμ μμ±` (νΈμ΄μ€ν
)
π‘ ν¨μ ννμ : λ³μ νΈμ΄μ€ν
μ΄ λ°μν΄ λ³μμ `undefined` κ°μ΄ λ€μ΄κ°
π―ν¨μ μ μΈλ¬Έμ νΈμ΄μ€ν , ν¨μ μ μΈλ¬Έμ λ³μ νΈμ΄μ€ν
- ν¨μμ 맀κ°λ³μ(parameter) λ ν¨μ
λͺΈμ²΄ λ΄λΆμμλ§ μ°Έμ‘°
ν μ μλ€. μ¦,맀κ°λ³μ
μ μ€μ½ν(μ ν¨ λ²μ)λν¨μ λ΄λΆ
λ€. - ν¨μμ
parameter
μμΈμ
λ κ°μκ° λ¬λΌλ μ€λ₯κ°λμ§ μλλ€
.- μΈμκ°
<
νλΌλ―Έν° λ³΄λ€ μμΌλ©΄ λλ¨Έμ§ νλΌλ―Έν°λμ묡μ μΌλ‘ undefined
- μΈμκ°
>
νλΌλ―Έν° λ³΄λ€ λ§μΌλ©΄argument
κ°μ²΄μ μ μ₯λλ€.
- μΈμκ°
μμ
// π― 맀κ°λ³μμ κ°μ > μΈμμ κ°μ = λλ¨Έμ§ λ§€κ°λ³μ undefined
function mul(x, y) {
console.log(x, y); // 1 undefined
}
mul(1);
// π― 맀κ°λ³μμ κ°μ < μΈμμ κ°μ = arguments μ 보κ΄
function sub(x, y) {
console.log(arguments); // [Arguments] { '0': 3, '1': 2, '2': 1 }
return x - y;
}
sub(3, 2, 1); // 1
π‘μλ°μ€ν¬λ¦½νΈ ν¨μλ 맀κ°λ³μμ μΈμμ κ°μκ° μΌμΉνλμ§ νμΈνμ§ μλλ€.
π‘μλ°μ€ν¬λ¦½νΈλ "λμ νμ
μΈμ΄"λ€. λ°λΌμ μλ°μ€ν¬λ¦½νΈ ν¨μλ 맀κ°λ³μμ "νμ
μ μ¬μ μ μ§μ ν μ μλ€."
- ν¨μλ₯Ό μ μν λ,
μΈμκ° μ λ¬λμλμ§ νμΈ
ν νμκ° μλ€. (νλΌλ―Έν°μ (!=) μΈμκ° λ¬λΌλ μ€λ₯κ° λμ§ μκΈ° λλ¬Έμ)typeof
μ°μ°μ λ₯Ό μ¬μ©νλ λ°©λ²- μΈμκ° μ λ¬λμ§ μμ κ²½μ° λ¨μΆ νκ° λ₯Ό μ¬μ©νλ λ°©λ²
- 맀κ°λ³μμ κΈ°λ³Έκ°μ ν λΉνλ λ°©λ²
// 1οΈβ£ typeof μ°μ°μλ‘ arguments λ¬Έμ λ°©μ§
function add(x, y) {
if (typeof x !== "number" || typeof y !== "number") {
throw new TypeError("μΈμλ λͺ¨λ μ«μ(number)κ° μ΄μ΄μΌ ν©λλ€.");
}
return x + y;
}
// 2οΈβ£ "λ¨μΆ νκ°"λ‘ arguments λ¬Έμ λ°©μ§
function mul(a, b, c) {
a = a || 1;
b = b || 1;
c = c || 1;
return a * b * c;
}
// 3οΈβ£ parameter default value μ€μ μΌλ‘ argument λ¬Έμ λ°©μ§
function sub(a = 0, b = 0) {
return a - b;
}
-
κ°μ μν νΈμΆ
:μμκ°
μ μ λ¬λ³κ²½ λΆκ°λ₯ν κ°
- μμ νμ
μargumentλ κ°μ체κ°
볡μ¬
λμ΄λ§€κ² λ³μ
λ‘ μ λ¬ X μλ³Έμ νΌμ X
-
μ°Έμ‘°μ μν νΈμΆ
:κ°μ²΄
λ₯Ό μ λ¬λ³κ²½μ΄ κ°λ₯ν κ°
- κ°μ²΄ argument λ μ°Έμ‘° κ°μ΄ 맀κ²λ³μμ μ λ¬
O μλ³Έμ νΌμ O
π‘ ν¨μμ νλΌλ―Έν°λ‘ μμκ°μ μ£Όλ©΄ μλ³Έμ΄ νΌμλμ§ μμ§λ§, κ°μ²΄λ₯Ό μ£Όλ©΄ μ볡 κ°μ²΄κ° νΌμλλ€.
function changeVal(primitive, obj) {
primitive += 100;
obj.name = "WIEEE";
}
// μΈλΆ μν
var num = 100; // μμ κ°
var person = { name: "WI" }; // κ°μ²΄
//person κ°μ²΄μ κ°λ λ³ν¨
changeVal(num, person);
[ π‘ μμ ν¨μ ]
+ μΈλΆ μνλ₯Ό λ³κ²½νμ§ μκ³ μΈλΆ μνμ μμ‘΄νμ§λ μλ ν¨μλ₯Ό "μμ ν¨μ"
+ μμ ν¨μλ₯Ό ν΅ν΄ λΆμν¨κ³Ό(side effect)λ₯Ό μ΅λν μ΅μ νκ³ μ€λ₯λ₯Ό νΌν΄ νλ‘κ·Έλ¨ μμ μ±μ λμΈλ€. = "ν¨μν νλ‘κ·Έλλ°"
μ¦μ μ€ν ν¨μ
: λ°λμ()
λ‘ κ°μΈμΌ νλ€
(function () {
console.log("μ¦μ μ€ν ν¨μ");
})();
μ¬κ· ν¨μ
: μκΈ° μμ μ νΈμΆνλ ν¨μ
μ€μ²© ν¨μ
: μ€μ²© ν¨μλ μΈλΆ ν¨μ λ΄λΆμμλ§ νΈμΆν μ μλ€.μ€μ²© ν¨μ μμ !
function outer() {
var x = 1;
// μ€μ²© ν¨μ == λ΄λΆ ν¨μ
function inner() {
var y = 2;
// μΈλΆ ν¨μμ λ³μ μ°Έμ‘°
console.log(x + y); // 3
}
inner();
}
outer();
μ½λ°± ν¨μ
: ν¨μμνλΌλ―Έν°
λ₯Ό ν΅ν΄λ€λ₯Έν¨μ λ΄λΆ
μ μ λ¬λλν¨μ
ν리미ν°λ‘
ν¨μλ₯Ό μ λ¬
λ°μ ν¨μ :κ³ μ°¨ ν¨μ
- μ½λ°±ν¨μλ κ³ μ°¨ ν¨μμ μν΄ νΈμΆλ¨
- ν¨μλ
μΌκΈ κ°μ²΄
μ΄λ―λ‘ ν¨μμ 맀κ°λ³μλ₯Ό ν΅ν΄ ν¨μλ₯Ό μ λ¬ κ°λ₯ - ν¨μλ λ μ΄μ λ΄λΆλ‘μ§μ κ°λ ₯ν μμ‘΄νμ§ μκ³ μΈλΆμμ λ‘μ§μ μΌλΆλΆμ ν¨μλ‘ μ λ¬λ°μ μννλ―λ‘ μ μ°ν ꡬ쑰λ₯Ό κ°λλ€.
μ½λ°± ν¨μ μμ
// μΈλΆμμ μ λ¬λ°μ func λ₯Ό n λ§νΌ λ°λ³΅ νΈμΆ - κ³ μ°¨ ν¨μ repeat
function repeat(n, f) {
for (var i = 0; i < n; i++) {
f(i);
}
}
// μ½λ°± ν¨μ μ μ - logAll
var logAll = function (i) {
console.log(i);
};
// λ°λ³΅ νΈμΆν ν¨μλ₯Ό μΈμλ‘ μ λ¬
repeat(5, logAll); // 0 1 2 3 4
// μ½λ°± ν¨μ μ μ - logOdd
var logOdd = function (i) {
if (i % 2) console.log(i);
};
// λ°λ³΅ νΈμΆν ν¨μλ₯Ό μΈμλ‘ μ λ¬
repeat(5, logOdd); // 1 3