arguments 对象
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
* Some parts of this feature may have varying levels of support.
arguments æ¯ä¸ä¸ªç±»æ°ç»å¯¹è±¡ï¼å¯å¨å½æ°å
é¨è®¿é®ï¼å
¶ä¸å
å«ä¼ éç»è¯¥å½æ°çåæ°å¼ã
å°è¯ä¸ä¸
function func1(a, b, c) {
console.log(arguments[0]);
// ææè¾åºï¼1
console.log(arguments[1]);
// ææè¾åºï¼2
console.log(arguments[2]);
// ææè¾åºï¼3
}
func1(1, 2, 3);
æè¿°
夿³¨ï¼ç°ä»£ä»£ç ä¼å æ¨è使ç¨å©ä½åæ°è¯æ³ã
arguments å¯¹è±¡æ¯ææéç®å¤´å½æ°ä¸é½å¯ç¨çå±é¨åéãä½ å¯ä»¥ä½¿ç¨ arguments 对象å¨å½æ°ä¸å¼ç¨å½æ°çåæ°ãæ¤å¯¹è±¡å
å«ä¼ éç»å½æ°çæ¯ä¸ªåæ°ï¼ç¬¬ä¸ä¸ªåæ°å¨ç´¢å¼ 0 å¤ã
ä¾å¦ï¼å¦æä¸ä¸ªå½æ°ä¼ éäºä¸ä¸ªåæ°ï¼ä½ å¯ä»¥ä½¿ç¨å¦ä¸æ¹å¼å¼ç¨ä»ä»¬ï¼
arguments[0]; // 第ä¸ä¸ªåæ°
arguments[1]; // 第äºä¸ªåæ°
arguments[2]; // 第ä¸ä¸ªåæ°
arguments 对象éç¨äºæ¥æ¶çåæ°æ°éè¶
è¿å
¶å½¢å¼å£°ææ°éç彿°ï¼å³å¯å忰彿°ï¼ä¾å¦ Math.min()ãæ¤ç¤ºä¾å½æ°å¯æ¥æ¶ä»»ææ°éçåç¬¦ä¸²åæ°ï¼å¹¶è¿åå
¶ä¸æé¿çå符串ï¼
function longestString() {
let longest = "";
if (arguments.length === 0) {
throw new TypeError("è³å°éè¦ä¼ éä¸ä¸ªå符串");
}
for (const arg of arguments) {
if (arg.length > longest.length) {
longest = arg;
}
}
return longest;
}
ä½ å¯ä»¥ä½¿ç¨ arguments.length æ¥ç»è®¡å½æ°è¢«è°ç¨æ¶æ¥æ¶çåæ°æ°éãè¥éç»è®¡å½æ°å£°ææ¶æ¥åçåæ°æ°éï¼è¯·æ£æ¥è¯¥å½æ°ç length 屿§ã
éè¿ç´¢å¼èµå¼
æ¯ä¸ªåæ°ç´¢å¼ä¹å¯ä»¥è¢«è®¾ç½®æéæ°èµå¼ï¼
arguments[1] = "æ°å¼";
ä»
å
å«ç®ååæ°ï¼å³ä¸å«å©ä½åæ°ãé»è®¤åæ°æè§£æåæ°ï¼çéä¸¥æ ¼å½æ°ä¼å°åæ°çæ°å¼ä¸ arguments å¯¹è±¡åæ¥ï¼åä¹äº¦ç¶ï¼
function func(a) {
arguments[0] = 99; // æ´æ° arguments[0] ä¹ä¼æ´æ° a
console.log(a);
}
func(10); // 99
function func2(a) {
a = 99; // æ´æ° a ä¹ä¼æ´æ° arguments[0]
console.log(arguments[0]);
}
func2(10); // 99
éä¸¥æ ¼å½æ°è¥ä¼ éäºå©ä½åæ°ãé»è®¤å¼æè§£æåæ°ï¼ä¸ä¼å°å½æ°ä½ä¸èµäºåæ°çæ°å¼åæ¥å° arguments 对象ãç¸åï¼å¨å
·æå¤æåæ°çéä¸¥æ ¼å½æ°ä¸ï¼arguments 对象å§ç»åæ 彿°è°ç¨æ¶ä¼ éçå¼ã
function funcWithDefault(a = 55) {
arguments[0] = 99; // æ´æ° arguments[0] ä¸ä¼æ´æ° a
console.log(a);
}
funcWithDefault(10); // 10
function funcWithDefault2(a = 55) {
a = 99; // æ´æ° a ä¸ä¼æ´æ° arguments[0]
console.log(arguments[0]);
}
funcWithDefault2(10); // 10
// æªè·è¸ªçé»è®¤åæ°
function funcWithDefault3(a = 55) {
console.log(arguments[0]);
console.log(arguments.length);
}
funcWithDefault3(); // undefined; 0
è¿æ¯ææä¸¥æ ¼æ¨¡å¼å½æ°çå
±åè¡ä¸ºï¼æ è®ºä¼ éçåæ°ç±»åå¦ä½ãä¹å°±æ¯è¯´ï¼å¨å½æ°ä½å
ä¸ºåæ°èµæ°å¼æ°¸è¿ä¸ä¼å½±å arguments 对象ï¼åæ ·å°ï¼ä¸º arguments ç´¢å¼èµæ°å¼ä¹ä¸ä¼æ¹ååæ°çå¼ââå³ä½¿å½æ°ä»
å
å«ç®å忰乿¯å¦æ¤ã
夿³¨ï¼å¨æ¥åå©ä½åæ°ãé»è®¤åæ°æè§£æåæ°ç彿°å®ä¹ä¸»ä½ä¸ï¼ä¸è½ä½¿ç¨ "use strict"; æä»¤ãè¿æ ·åå°æåºè¯æ³é误ã
arguments æ¯ç±»æ°ç»å¯¹è±¡
arguments æ¯ä¸ä¸ªç±»æ°ç»å¯¹è±¡ï¼è¿æå³çå®å
·æ length 屿§ï¼ä¸å±æ§ç´¢å¼ä»é¶å¼å§ï¼ä½å®ä¸å
·å¤ Array çå
ç½®æ¹æ³ï¼ä¾å¦ forEach() æ map()ãä¸è¿ï¼å¯éè¿ä»¥ä¸æ¹å¼å°å
¶è½¬æ¢ä¸ºçæ£ç Arrayï¼ä½¿ç¨ slice()ãArray.from() æå±å¼è¯æ³ã
const args = Array.prototype.slice.call(arguments);
// æ
const args = Array.from(arguments);
// æ
const args = [...arguments];
对äºå¸¸è§ç¨ä¾ï¼å°å
¶ä½ä¸ºç±»æ°ç»å¯¹è±¡ä½¿ç¨å·²è¶³å¤ï¼å ä¸ºå®æ¢å¯è¿ä»£ï¼åå
·å¤ length 屿§åæ°åç´¢å¼ãä¾å¦ï¼Function.prototype.apply() æ¹æ³æ¥åç±»æ°ç»å¯¹è±¡ã
function midpoint() {
return (
(Math.min.apply(null, arguments) + Math.max.apply(null, arguments)) / 2
);
}
console.log(midpoint(3, 1, 4, 1, 5)); // 3
屿§
arguments.calleeå·²å¼ç¨-
æååæ°æå±çå½åæ§è¡ç彿°ãå¨ä¸¥æ ¼æ¨¡å¼ä¸ç¦ç¨ã
arguments.length-
ä¼ éç»å½æ°çåæ°æ°éã
arguments[Symbol.iterator]-
è¿åä¸ä¸ªæ°çæ°ç»è¿ä»£å¨å¯¹è±¡ï¼è¯¥å¯¹è±¡å å«
arguments䏿¯ä¸ªç´¢å¼çå¼ã
示ä¾
>å®ä¹è¿æ¥å符串ç彿°
è¿ä¸ªä¾åå®ä¹äºä¸ä¸ªå½æ°æ¥è¿æ¥å符串ãè¿ä¸ªå½æ°å¯ä¸çå½¢å¼åæ°æ¯ä¸ä¸ªå符串ï¼å ¶ä¸å å«ç¨äºåéå¾ è¿æ¥é¡¹çåé符ãè¯¥å½æ°å®ä¹å¦ä¸ï¼
function myConcat(separator) {
const args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
ä½ å¯ä»¥ä¼ éä»»ææ°éçåæ°å°è¯¥å½æ°ï¼å¹¶ä½¿ç¨æ¯ä¸ªåæ°ä½ä¸ºå表ä¸ç项å建å表ã
myConcat(", ", "red", "orange", "blue");
// "red, orange, blue"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
// "elephant; giraffe; lion; cheetah"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
// "sage. basil. oregano. pepper. parsley"
å®ä¹å建 HTML å表ç彿°
è¿ä¸ªä¾åå®ä¹äºä¸ä¸ªå½æ°éè¿ä¸ä¸ªå符串æ¥å建 HTML å表ãè¿ä¸ªå½æ°å¯ä¸çå½¢å¼åæ°æ¯ä¸ä¸ªå符ãå½è¯¥åæ°ä¸º "u" æ¶ï¼å建ä¸ä¸ªæ åºå表ï¼é¡¹ç®å表ï¼ï¼å½è¯¥åæ°ä¸º "o" æ¶ï¼åå建ä¸ä¸ªæåºå表ï¼ç¼å·å表ï¼ãè¯¥å½æ°å®ä¹å¦ä¸ï¼
function list(type) {
let html = `<${type}l><li>`;
const args = Array.prototype.slice.call(arguments, 1);
html += args.join("</li><li>");
html += `</li></${type}l>`; // åè¡¨ç»æ
return html;
}
ä½ å¯ä»¥ä¼ éä»»ææ°éçåæ°å°è¯¥å½æ°ï¼å¹¶å°æ¯ä¸ªåæ°ä½ä¸ºä¸ä¸ªé¡¹æ·»å å°æå®ç±»åçå表ä¸ãä¾å¦ï¼
list("u", "ä¸", "äº", "ä¸");
// "<ul><li>ä¸</li><li>äº</li><li>ä¸</li></ul>"
typeof ä¸ arguments
typeof è¿ç®ç¬¦å¯¹ arguments è¿å objectï¼
console.log(typeof arguments); // 'object'
éè¿ç´¢å¼ arguments å¯ç¡®å®åä¸ªåæ°çç±»åï¼
console.log(typeof arguments[0]); // è¿å第ä¸ä¸ªåæ°çç±»å
è§è
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-arguments-exotic-objects > |
æµè§å¨å ¼å®¹æ§
åè§
- 彿°ç±»å
- 彿°
- å©ä½åæ°