Baseline Widely available
彿°é»è®¤åæ°å
è®¸å¨æ²¡æå¼æ 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 [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements }æè¿°
JavaScript ä¸å½æ°çåæ°é»è®¤æ¯ undefined
ãç¶èï¼å¨æäºæ
åµä¸å¯è½éè¦è®¾ç½®ä¸ä¸ªä¸åçé»è®¤å¼ãè¿æ¯é»è®¤åæ°å¯ä»¥å¸®å©çå°æ¹ã
以åï¼ä¸è¬è®¾ç½®é»è®¤åæ°çæ¹æ³æ¯å¨å½æ°ä½æµè¯åæ°æ¯å¦ä¸º undefined
ï¼å¦ææ¯çè¯å°±è®¾ç½®ä¸ºé»è®¤çå¼ã
ä¸é¢çä¾åä¸ï¼å¦æå¨è°ç¨ multiply
æ¶ï¼åæ° b
ç弿²¡ææä¾ï¼é£ä¹å®çå¼å°±ä¸º undefined
ãå¦æç´æ¥æ§è¡ a * b
ï¼å½æ°ä¼è¿å NaN
ã
function multiply(a, b) {
return a * b;
}
multiply(5, 2); // 10
multiply(5); // NaN !
为äºé²æ¢è¿ç§æ
åµï¼ç¬¬äºè¡ä»£ç è§£å³äºè¿ä¸ªé®é¢ï¼å
¶ä¸å¦æåªä½¿ç¨ä¸ä¸ªåæ°è°ç¨multiply
ï¼åb
设置为1
ï¼
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a * b;
}
multiply(5, 2); // 10
multiply(5); // 5
æäºé»è®¤åæ°ï¼æä»¬ä¸éè¦åå¨å½æ°ä½å
åä¸å¿
è¦çæ£æ¥ãç°å¨ä½ å¯ä»¥å¨å½æ°å¤´å°b
çé»è®¤å¼ç½®ä¸º1
ï¼
function multiply(a, b = 1) {
return a * b;
}
multiply(5, 2); // 10
multiply(5); // 5
ç¤ºä¾ ä¼ å
¥ undefined
vs å
¶ä»åå¼
å¨ç¬¬äºæ¬¡è°ç¨ä¸ï¼å³ä½¿ç¬¬ä¸ä¸ªåæ°å¨è°ç¨æ¶æ¾å¼è®¾ç½®ä¸ºundefined
ï¼è½ç¶ä¸æ¯null
æå
¶ä»falsyå¼ï¼ï¼ä½æ¯num
åæ°ç弿¯é»è®¤å¼ã
function test(num = 1) {
console.log(typeof num);
}
test(); // 'number' (num is set to 1)
test(undefined); // 'number' (num is set to 1 too)
// test with other falsy values:
test(""); // 'string' (num is set to '')
test(null); // 'object' (num is set to null)
è°ç¨æ¶è§£æ
å¨å½æ°è¢«è°ç¨æ¶ï¼åæ°é»è®¤å¼ä¼è¢«è§£æï¼æä»¥ä¸å Python ä¸çä¾åï¼æ¯æ¬¡å½æ°è°ç¨æ¶é½ä¼å建ä¸ä¸ªæ°çåæ°å¯¹è±¡ã
function append(value, array = []) {
array.push(value);
return array;
}
append(1); //[1]
append(2); //[2], not [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!"]
以ä¸è¿ä¸ªä¾åè¿ä¼¼æ¨¡æäºä¸äºæ¯è¾ç®åçæ åµï¼å¹¶è¯´æäºç¹æ®æ 嵿¯æä¹è¢«å¤ççã
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:
a;
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;
default:
}
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, "=^_^="]
彿°åµå¥å®ä¹
å¨ Gecko 33 ä¸å¼å
¥ãå¨å½æ°ä½å
ç彿°å£°æä¸è½å¼ç¨å
é¨çé»è®¤åæ°ï¼å¹¶ä¸ä¼å¨ SpiderMonkey æåºä¸ä¸ªReferenceError
ï¼ç°å¨æ¯ TypeError
ï¼ï¼åè§ Firefox bug 1022967ãé»è®¤åæ°æ»æ¯ä¼è¢«é¦å
æ§è¡ï¼èå¨å½æ°ä½å
é¨ç彿°å£°æä¼å¨ä¹åçæã
// Doesn't work! Throws ReferenceError.
function f(a = go()) {
function go() {
return ":P";
}
}
ä½äºé»è®¤åæ°ä¹åéé»è®¤åæ°
å¨ Gecko 26 ä¹åï¼ä»¥ä¸ä»£ç ä¼é æSyntaxError
é误ãè¿å·²ç»å¨Firefox bug 1022967ä¸ä¿®å¤ï¼å¹¶å¨ä»¥åççæ¬ä¸æé¢ææ¹å¼å·¥ä½ãåæ°ä»ç¶è®¾ç½®ä¸ºä»å·¦å°å³ï¼è¦çé»è®¤åæ°ï¼å³ä½¿åé¢çåæ°æ²¡æé»è®¤å¼ã
function f(x = 1, y) {
return [x, y];
}
f(); // [1, undefined]
f(2); // [2, undefined]
æé»è®¤å¼çè§£æåæ°
ä½ å¯ä»¥éè¿è§£æä¸ºåæ°èµå¼ï¼
function f([x, y] = [1, 2], { z: z } = { z: 3 }) {
return x + y + z;
}
f(); // 6
è§è æµè§å¨å
¼å®¹æ§ åè§
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