Baseline Widely available
å ¶é¤åæ¸ï¼rest parameterï¼ èªæ³å¯ä»¥è®æå表示ä¸ç¢ºå®æ¸éç忏ï¼ä¸¦å°å ¶è¦çºä¸åé£åã
èªæ³function f(a, b, ...theArgs) {
// ...
}
æè¿°
妿å½å¼çæå¾ä¸åå½å忏以 ...
éé ï¼å®æè¢«è¦çºä¸åé£åã該é£åçå
ç´ æè¢«ç½®æ¼ç´¢å¼å¾ 0
ï¼å«ï¼å°ç theArgs.length
ï¼ä¸å«ï¼ä½ç½®ï¼ä¸¦ä¸è¢«è¦çºä¸åå½å¼ç忏ã
å¨ä¸é¢çç¯ä¾ä¸ï¼theArgs
æå°å½å¼ f ä¸ç¬¬ä¸å(å«)以å¾ç忏æ¶éèµ·ä¾ã
arguments
ç©ä»¶çå·®ç°
以䏿¯å
¶é¤åæ¸å arguments ç©ä»¶
ä¸å主è¦çå·®ç°ï¼
arguments
ç©ä»¶è¢«å³å
¥å°å½å¼çæåï¼éæ²è¢«æå®è®æ¸å稱ç弿¸ãarguments
ç©ä»¶ä¸æ¯ä¸å實éçé£åï¼è rest parameter æ¯é£åç實é«ï¼å³ sort
ãmap
ãforEach
æ pop
å¯ä»¥ç´æ¥å¨å
¶é¤åæ¸è¢«èª¿ç¨ãarguments
ç©ä»¶èªèº«æé¡å¤çåè½ï¼ä¾å¦ callee
屬æ§ãå ¶é¤åæ¸è¢«ä»ç´¹ä½çºåä»£ç¨ arguments 寫çç¯ä¾ç¨å¼ã
// 卿å
¶é¤åæ¸ä¹åï¼ä½ å¯è½è¦éä¸é¢çç¨å¼ç¢¼ï¼
function f(a, b) {
var args = Array.prototype.slice.call(arguments, f.length); // f.length 表示 arguments çæ¸é
// â¦
}
// ç¾å¨å¯ä»¥å¯«æé樣
function f(a, b, ...args) {}
è§£æ§å
¶é¤åæ¸
å ¶é¤åæ¸å¯ä»¥è¢«è§£æ§ï¼æå¥è©±èªªï¼å¯ä»¥æéåé£åè§£éï¼ä¸¦å°ååå ç´ ååºæçºåå¥çè®æ¸ãè«åèè§£æ§ã
function f(...[a, b, c]) {
return a + b + c;
}
f(1); // NaN (b å c 齿¯ undefined)
f(1, 2, 3); // 6
f(1, 2, 3, 4); // 6 (第åååæ¸ä¸æè¢«è§£æ§ï¼å çºè§£æ§å¼åªæä¸åå®ç¾©å¥½çè®æ¸å稱)
ç¯ä¾
å çº theArgs
æ¯ä¸åé£åï¼æä»¥å®ææ length
屬æ§ï¼ä½çºè¡¨ç¤ºåæ¸æ¸éï¼
function fun1(...theArgs) {
console.log(theArgs.length);
}
fun1(); // 0
fun1(5); // 1
fun1(5, 6, 7); // 3
卿¥ä¸ä¾çç¯ä¾ä¸ï¼å ¶é¤åæ¸è¢«ç¨ä¾æ¶é第ä¸åä¹å¾çææå¼æ¸ä¸¦åå¨é£åä¸ã å¨éåé£åè£¡çæ¯åå ç´ (æ¸å)ï¼é½æå第ä¸å忏ç¸ä¹å¾å代忬çå ç´ ï¼æå¾åå°å代å ç´ å¾çé£ååå³ã
function multiply(multiplier, ...theArgs) {
return theArgs.map(function (element) {
return multiplier * element;
});
}
var arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
ä¸åç¯ä¾å±ç¤º Array
çæ¹æ³å¯ä»¥å¨å
¶é¤åæ¸ä¸è¢«ä½¿ç¨ï¼ä½ arguments
åä¸è¡ã
function sortRestArgs(...theArgs) {
var sortedArgs = theArgs.sort();
return sortedArgs;
}
console.log(sortRestArgs(5, 3, 7, 1)); // 顯示 1, 3, 5, 7
function sortArguments() {
var sortedArgs = arguments.sort();
return sortedArgs; // å çºåä¸è¡æå çº arguments æ²æsort()éåæ¹æ³èé æTypeErrorï¼æä»¥æ°¸é 䏿å·è¡æ¤è¡ã
}
console.log(sortArguments(5, 3, 7, 1)); // ææåº TypeError (arguments.sort is not a function)
çºäºè¦å¨ arguments
ç©ä»¶ä¸ä½¿ç¨ Array
çæ¹æ³ï¼å¯ä»¥å°å®è½ææçç Array
實é«ï¼æè
以 apply()
ç´æ¥èª¿ç¨éè¦çæ¹æ³ã
function sortArguments() {
var args = Array.from(arguments);
var sortedArgs = args.sort();
return sortedArgs;
}
console.log(sortArguments(5, 3, 7, 1)); // 顯示 1, 3, 5, 7
è¦ç¯ ç覽å¨ç¸å®¹æ§ åè¦
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