Baseline Widely available
å©ä½åæ°è¯æ³å 许æä»¬å°ä¸ä¸ªä¸å®æ°éçåæ°è¡¨ç¤ºä¸ºä¸ä¸ªæ°ç»ã
å°è¯ä¸ä¸function sum(...theArgs) {
let total = 0;
for (const arg of theArgs) {
total += arg;
}
return total;
}
console.log(sum(1, 2, 3));
// Expected output: 6
console.log(sum(1, 2, 3, 4));
// Expected output: 10
è¯æ³
function(a, b, ...theArgs) {
// ...
}
æè¿°
妿彿°çæåä¸ä¸ªå½å忰以...
为åç¼ï¼åå®å°æä¸ºä¸ä¸ªç±å©ä½åæ°ç»æççæ°ç»ï¼å
¶ä¸ä»0
ï¼å
æ¬ï¼å°theArgs.length
ï¼æé¤ï¼çå
ç´ ç±ä¼ éç»å½æ°çå®é
åæ°æä¾ã
å¨ä¸é¢çä¾åä¸ï¼theArgs
å°æ¶éè¯¥å½æ°ç第ä¸ä¸ªåæ°ï¼å 为第ä¸ä¸ªåæ°è¢«æ å°å°a
ï¼è第äºä¸ªåæ°æ å°å°b
ï¼åææåç»åæ°ã
arguments
对象çåºå«
å©ä½åæ°å arguments
对象ä¹é´çåºå«ä¸»è¦æä¸ä¸ªï¼
arguments
对象å
å«äºä¼ ç»å½æ°çææå®åãarguments
å¯¹è±¡ä¸æ¯ä¸ä¸ªçæ£çæ°ç»ï¼èå©ä½åæ°æ¯çæ£ç Array
å®ä¾ï¼ä¹å°±æ¯è¯´ä½ è½å¤å¨å®ä¸é¢ç´æ¥ä½¿ç¨ææçæ°ç»æ¹æ³ï¼æ¯å¦ sort
ï¼map
ï¼forEach
æpop
ãarguments
å¯¹è±¡è¿æä¸äºéå ç屿§ï¼å¦callee
屿§ï¼ãå¼å ¥äºå©ä½åæ°æ¥åå°ç±åæ°å¼èµ·çæ ·æ¿ä»£ç ã
// Before rest parameters, "arguments" could be converted to a normal array using: function f(a, b) { var normalArray = Array.prototype.slice.call(arguments); // -- or -- var normalArray = [].slice.call(arguments); // -- or -- var normalArray = Array.from(arguments); var first = normalArray.shift(); // OK, gives the first argument var first = arguments.shift(); // ERROR (arguments is not a normal array) } // Now we can easily gain access to a normal array using a rest parameter function f(...args) { var normalArray = args; var first = normalArray.shift(); // OK, gives the first argument }è§£æå©ä½åæ°
å©ä½åæ°å¯ä»¥è¢«è§£æï¼è¿æå³çä»ä»¬çæ°æ®å¯ä»¥è¢«è§£å å°ä¸åçåéä¸ã请åé è§£æã
function f(...[a, b, c]) {
return a + b + c;
}
f(1); // NaN (b and c are undefined)
f(1, 2, 3); // 6
f(1, 2, 3, 4); // 6 (the fourth parameter is not destructured)
示ä¾
å 为theArgs
æ¯ä¸ªæ°ç»ï¼æä»¥ä½ å¯ä»¥ä½¿ç¨length
屿§å¾å°å©ä½åæ°ç个æ°ï¼
function fun1(...theArgs) {
alert(theArgs.length);
}
fun1(); // å¼¹åº "0", å 为 theArgs 没æå
ç´
fun1(5); // å¼¹åº "1", å 为 theArgs åªæä¸ä¸ªå
ç´
fun1(5, 6, 7); // å¼¹åº "3", å 为 theArgs æä¸ä¸ªå
ç´
ä¸ä¾ä¸ï¼å©ä½åæ°å å«äºä»ç¬¬äºä¸ªå°æåçææå®åï¼ç¶åç¨ç¬¬ä¸ä¸ªå®å便¬¡ä¹ä»¥å®ä»¬ï¼
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]
ä¸ä¾æ¼ç¤ºäºä½ å¯ä»¥å¨å©ä½åæ°ä¸ä½¿ç¨ä»»æçæ°ç»æ¹æ³ï¼èarguments
对象ä¸å¯ä»¥ï¼
function sortRestArgs(...theArgs) {
var sortedArgs = theArgs.sort();
return sortedArgs;
}
alert(sortRestArgs(5, 3, 7, 1)); // å¼¹åº 1,3,5,7
function sortArguments() {
var sortedArgs = arguments.sort();
return sortedArgs; // ä¸ä¼æ§è¡å°è¿é
}
alert(sortArguments(5, 3, 7, 1)); // æåº TypeError å¼å¸¸:arguments.sort is not a function
为äºå¨arguments
对象ä¸ä½¿ç¨Array
æ¹æ³ï¼å®å¿
é¡»é¦å
被转æ¢ä¸ºä¸ä¸ªçæ£çæ°ç»ã
function sortArguments() {
var args = Array.prototype.slice.call(arguments);
var sortedArgs = args.sort();
return sortedArgs;
}
console.log(sortArguments(5, 3, 7, 1)); // shows 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