Baseline Widely available
ê¸°ë³¸ê° í¨ì 매ê°ë³ì (default function parameter)를 ì¬ì©íë©´ ê°ì´ ì ë¬ëì§ ìê±°ë undefined
ì¸ ê²½ì° ëª
ëª
ë 매ê°ë³ì를 기본ê°ì¼ë¡ ì´ê¸°íí ì ììµëë¤.
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5, 2));
// Expected output: 10
console.log(multiply(5));
// Expected output: 5
구문
function fnName(param1 = defaultValue1, /* â¦, */ paramN = defaultValueN) {
// â¦
}
ì¤ëª
JavaScriptìì, í¨ìì 매ê°ë³ìë
ê° ê¸°ë³¸ì
ëë¤. ê·¸ë¬ë, ì¼ë¶ ìí©ììë ë¤ë¥¸ 기본 ê°ì ì¤ì íë ê²ì´ ì ì©í ì ììµëë¤. ì´ëê° ë°ë¡ ê¸°ë³¸ê° ë§¤ê°ë³ìê° íìí ë ì
ëë¤.undefined
ë¤ì ìì ìì multiply
ê° í¸ì¶ë ë b
ì ëí ê°ì´ ì ê³µëì§ ìì¼ë©´ a * b
를 íê°í ë b
ì ê°ì undefined
ê° ëê³ multiply
ë NaN
ì ë°íí©ëë¤.
function multiply(a, b) {
return a * b;
}
multiply(5, 2); // 10
multiply(5); // NaN !
과거ì 기본ê°ì ì¤ì íë ì¼ë°ì ì¸ ë°©ë²ì í¨ì 본문ìì 매ê°ë³ì ê°ì í
ì¤í¸íê³ undefined
ì¸ ê²½ì° ê°ì í ë¹íë ê²ì´ììµëë¤. ë¤ì ìì ììë multiply
ê° íëì ì¸ìë¡ë§ í¸ì¶ëë ê²½ì° b
ê° 1
ë¡ ì¤ì ë©ëë¤.
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a * b;
}
multiply(5, 2); // 10
multiply(5); // 5
기본 매ê°ë³ì를 ì¬ì©íë©´ í¨ì ë´ë¶ì ê²ì¬ë ë ì´ì íìíì§ ììµëë¤. ì´ì í¨ì 머리(head)ìì b
ì 1
ì 기본ê°ì¼ë¡ ì§ì í ì ììµëë¤.
function multiply(a, b = 1) {
return a * b;
}
multiply(5, 2); // 10
multiply(5); // 5
multiply(5, undefined); // 5
매ê°ë³ìë ì¬ì í ì¼ìª½ìì ì¤ë¥¸ìª½ì¼ë¡ ì¤ì ëì´ ëì¤ì 기본ê°ì´ ìë 매ê°ë³ìê° ìëë¼ë 기본ê°ì ë®ì´ìëë¤.
function f(x = 1, y) {
return [x, y];
}
f(); // [1, undefined]
f(2); // [2, undefined]
ì°¸ê³ : 첫 ë²ì§¸ 기본 매ê°ë³ìì ê·¸ ì´íì 모ë 매ê°ë³ìë í¨ìì length
ì ìí¥ì 미ì¹ì§ ììµëë¤.
기본 매ê°ë³ì ìì±ìë í¨ì 본문ìì ìì±ë ë²ìì ììì¸ ìì²´ ë²ììì ëìí©ëë¤.
ì¦, ì´ì 매ê°ë³ìë ì´í 매ê°ë³ìì ìì±ììì 참조í ì ììµëë¤. ê·¸ë¬ë í¨ì 본문ì ì ì¸ë í¨ìì ë³ìë ê¸°ë³¸ê° ë§¤ê°ë³ì ìì±ììì 참조í ì ìì¼ë©°, ì´ë¥¼ ìëíë©´ ë°íì ReferenceError
ê° ë°ìí©ëë¤. ì¬ê¸°ìë í¨ì 본문ìì var
ë¡ ì ì¸ë ë³ìë í¬í¨ë©ëë¤.
ì를 ë¤ì´, ë¤ì í¨ìë 기본 매ê°ë³ì ê°ì í¨ì 본문ì íì ë²ìì ëí ì ê·¼ ê¶íì´ ì기 ë문ì í¸ì¶ë ë ReferenceError
를 ë°ììíµëë¤.
function f(a = go()) {
function go() {
return ":P";
}
}
f(); // ReferenceError: goê° ì ìëì§ ìììµëë¤.
ì´ í¨ìë 매ê°ë³ì a
ì ê°ì ì¶ë ¥íëë°, ë³ì var a
ë 매ê°ë³ì 목ë¡ì ìì ë²ìê° ìë í¨ì 본문ì ëí´ ìì±ë ë²ììë§ ì¬ë¼ê°ê¸° ë문ì b
ìë ê°ì´ íìëì§ ììµëë¤.
function f(a, b = () => console.log(a)) {
var a = 1;
b();
}
f(); // undefined
f(5); // 5
ìì undefined
vs ë¤ë¥¸ ê±°ì§ê°ì ê°(falsy values) ì ë¬í기
ìë ìì ì¤ ë ë²ì§¸ í¸ì¶ìì, 첫 ë²ì§¸ ì¸ìê° ëª
ìì ì¼ë¡ undefined
(null
ëë ë¤ë¥¸ falsy ê°ì ìëì§ë§)ë¡ ì¤ì ëì´ ìì´ë ì¬ì í num
ì¸ìì ê°ì ì¬ì í 기본ê°ì
ëë¤.
function test(num = 1) {
console.log(typeof num);
}
test(); // 'number' (numì 1ë¡ ì¤ì ë¨)
test(undefined); // 'number' (numì´ ìì 1ë¡ ì¤ì ë¨)
// ë¤ë¥¸ falsy valuesë¡ í
ì¤í¸ í기
test(""); // 'string' (numì ''ë¡ ì¤ì ë¨)
test(null); // 'object' (numì nullë¡ ì¤ì ë¨)
í¸ì¶ ì íê°
기본 ì¸ìë í¸ì¶ ìì íê°ë©ëë¤. ê·¸ëì Pythonê³¼ ë¬ë¦¬ í¨ìê° í¸ì¶ë ëë§ë¤ ì ê°ì²´ê° ìì±ë©ëë¤.
function append(value, array = []) {
array.push(value);
return array;
}
append(1); // [1]
append(2); // [2], [1, 2]ê° ìëë¼
ì´ë ì¬ì§ì´ í¨ìì ë³ììë ì ì©ë©ëë¤.
function callSomething(thing = something()) {
return thing;
}
let numberOfTimesCalled = 0;
function something() {
numberOfTimesCalled += 1;
return numberOfTimesCalled;
}
callSomething(); // 1
callSomething(); // 2
ì´ì ë§¤ê° ë³ìë ì´í ë§¤ê° ë³ìì 기본ê°ì¼ë¡ ì¬ì©í ì ììµëë¤
ìì ì ìí 매ê°ë³ì(ì¼ìª½)ë ëì¤ì ì ìí 매ê°ë³ìì 기본ê°ì¼ë¡ ì¬ì©í ì ììµëë¤.
function greet(name, greeting, message = `${greeting} ${name}`) {
return [name, greeting, message];
}
greet("David", "Hi"); // ["David", "Hi", "Hi David"]
greet("David", "Hi", "Happy Birthday!"); // ["David", "Hi", "Happy Birthday!"]
ì´ ê¸°ë¥ì ë¤ìê³¼ ê°ì´ ëëµì ì¼ë¡ ê³ì°í ì ìì¼ë©°, ì´ë ì²ë¦¬ëë ê²½ê³ ì¡°ê±´(edge case)ì ì를 ë³´ì¬ì¤ëë¤.
function go() {
return ":P";
}
function withDefaults(
a,
b = 5,
c = b,
d = go(),
e = this,
f = arguments,
g = this.value,
) {
return [a, b, c, d, e, f, g];
}
function withoutDefaults(a, b, c, d, e, f, g) {
switch (arguments.length) {
case 0:
case 1:
b = 5;
case 2:
c = b;
case 3:
d = go();
case 4:
e = this;
case 5:
f = arguments;
case 6:
g = this.value;
}
return [a, b, c, d, e, f, g];
}
withDefaults.call({ value: "=^_^=" });
// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
withoutDefaults.call({ value: "=^_^=" });
// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
기본ê°ì´ í ë¹ë 구조íë 매ê°ë³ì
구조 ë¶í´ í ë¹ êµ¬ë¬¸ì ì¬ì©íì¬ ê¸°ë³¸ê° í ë¹ì ì¬ì©í ì ììµëë¤.
ì´ë¥¼ ìííë ì¼ë°ì ì¸ ë°©ë²ì ë¹ ê°ì²´/ë°°ì´ì 구조 ë¶í´ë 매ê°ë³ìì 기본ê°ì¼ë¡ ì¤ì íë ê²ì
ëë¤.(ì: [x = 1, y = 2] = []
) ì´ë ê² íë©´ í¨ìì ì무 ê²ë ì ë¬íì§ ìê³ ë í´ë¹ ê°ì´ 미리 ì±ìì ¸ ìì ì ììµëë¤.
function preFilledArray([x = 1, y = 2] = []) {
return x + y;
}
preFilledArray(); // 3
preFilledArray([]); // 3
preFilledArray([2]); // 4
preFilledArray([2, 3]); // 5
// ê°ì²´ììë ëì¼íê² ìëí©ëë¤.
function preFilledObject({ z = 3 } = {}) {
return z;
}
preFilledObject(); // 3
preFilledObject({}); // 3
preFilledObject({ z: 2 }); // 2
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ì°¸ì¡°
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4