arguments ãªãã¸ã§ã¯ã
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
arguments ã¯é
å風 (array-like) ãªãã¸ã§ã¯ãã§ããã颿°ã«æ¸¡ããã弿°ã®å¤ãå«ãã§ããã颿°å
ããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
試ãã¦ã¿ã¾ããã
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 ããå§ã¾ãã¾ãã
ãã¨ãã°ããã颿°ã« 3 ã¤ã®å¼æ°ã渡ããããªããæ¬¡ã®ããã«ãã®å¼æ°ãåç §ã§ãã¾ãã
arguments[0]; // 1 çªç®ã®å¼æ°
arguments[1]; // 2 çªç®ã®å¼æ°
arguments[2]; // 3 çªç®ã®å¼æ°
argumentsãªãã¸ã§ã¯ãã¯ãå½¢å¼çã«å®£è¨ããã弿°ããå¤ãã®å¼æ°ã§å¼ã³åºããã颿°ï¼å¯å¤é·å¼æ°é¢æ°ã¨å¼ã°ããï¼ã§æç¨ã§ããä¾ãã° Math.min() ã該å½ãã¾ãããã®ä¾ã®é¢æ°ã¯ä»»æã®æ°ã®æåå弿°ãåãåããæãé·ãæååãè¿ãã¾ãã
function longestString() {
let longest = "";
if (arguments.length === 0) {
throw new TypeError("1 ã¤ä»¥ä¸ã®æååãå¿
è¦ã§ã");
}
for (const arg of arguments) {
if (arg.length > longest.length) {
longest = arg;
}
}
return longest;
}
颿°ãå¼ã³åºãããéã®å¼æ°ã®æ°ãæ°ããã«ã¯ã arguments.length ã使ç¨ãããã¨ãã§ãã¾ãã代ããã«ã颿°ã宣è¨ä¸åãå
¥ãã弿°ã®æ°ãæ°ãããå ´åã¯ããã®é¢æ°ã® length ããããã£ã確èªãã¦ãã ããã
ä½ç½®ãæå®ããä»£å ¥
ããããã®ä½ç½®ã®å¼æ°ã«ã¯ãè¨å®ãããåä»£å ¥ããããããã¨ãã§ãã¾ãã
arguments[1] = "new value";
峿 ¼ã¢ã¼ãã§ãªã颿°ã§ãåç´ãªä»®å¼æ°ã®ã¿ãããå ´åï¼ããªãã¡ãæ®ä½å¼æ°ãããã©ã«ã弿°ãåå²å¼æ°ã§ã¯ãªãå ´åï¼ã 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 ã¯é
å風ãªãã¸ã§ã¯ãã§ããããªãã¡ã arguments ã length ããããã£ã¨ 0 ããå§ã¾ãæ·»åã®ããããã£ãæã£ã¦ãããã®ã®ã Array ã®çµã¿è¾¼ã¿ã¡ã½ãããä¾ãã° forEach() ã map() ãæã£ã¦ããªãã¨ãããã¨ã§ãããã ããslice()ãArray.from()ãã¾ãã¯ã¹ãã¬ããæ§æã®ããããã使ç¨ãã¦ãå®éã® Array ã«å¤æãããã¨ãã§ãã¾ãã
const args = Array.prototype.slice.call(arguments);
// or
const args = Array.from(arguments);
// or
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", "One", "Two", "Three");
// "<ul><li>One</li><li>Two</li><li>Three</li></ul>"
typeof ã arguments ã«ä½¿ç¨
typeof æ¼ç®åã¯ãarguments ã§ä½¿ç¨ãããå ´åã'object' ãè¿ãã¾ãã
console.log(typeof arguments); // 'object'
åã
ã®å¼æ°ã®å㯠arguments ãã¤ã³ããã¯ã¹æå®ãããã¨ã§ç¹å®ã§ãã¾ãã
console.log(typeof arguments[0]); // æåã®å¼æ°ã®åãè¿ã
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-arguments-exotic-objects > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- 颿°ã¬ã¤ã
- 颿°
- æ®ä½å¼æ°