å·²å¼ç¨: ä¸åæ¨è使ç¨è¯¥ç¹æ§ãè½ç¶ä¸äºæµè§å¨ä»ç¶æ¯æå®ï¼ä½ä¹è®¸å·²ä»ç¸å ³ç web æ åä¸ç§»é¤ï¼ä¹è®¸æ£åå¤ç§»é¤æåºäºå ¼å®¹æ§èä¿çã请尽éä¸è¦ä½¿ç¨è¯¥ç¹æ§ï¼å¹¶æ´æ°ç°æç代ç ï¼åè§æ¬é¡µé¢åºé¨çå ¼å®¹æ§è¡¨æ ¼ä»¥æå¯¼ä½ ä½åºå³å®ã请注æï¼è¯¥ç¹æ§éæ¶å¯è½æ æ³æ£å¸¸å·¥ä½ã
éæ å: è¯¥ç¹æ§å°æªæ ååãæä»¬ä¸å»ºè®®å¨ç产ç¯å¢ä¸ä½¿ç¨éæ åç¹æ§ï¼å 为å®ä»¬å¨æµè§å¨ä¸çæ¯ææéï¼ä¸å¯è½åçååæè¢«ç§»é¤ãä¸è¿ï¼å¨æ²¡ææ åé项çç¹å®æ åµä¸ï¼å®ä»¬å¯ä»¥ä½ä¸ºåéçæ¿ä»£æ¹æ¡ã
夿³¨ï¼ Function
对象ç arguments
屿§å·²è¢«å¼ç¨ãè®¿é® arguments
å¯¹è±¡çæ¨èæ¹å¼æ¯å¨å½æ°å
é¨å¼ç¨å¯ç¨ç arguments
åéã
Function
å®ä¾ç arguments
访é®å¨å±æ§è¿åä¼ éç»è¯¥å½æ°çåæ°ã对äºä¸¥æ ¼æ¨¡å¼ãç®å¤´å½æ°ã弿¥å½æ°åçæå¨å½æ°ï¼è®¿é® arguments
屿§ä¼æåº TypeError
ã
arguments
ç弿¯ä¸ä¸ªç±»æ°ç»å¯¹è±¡ï¼å¯¹åºäºä¼ å
¥å½æ°çåæ°ã
å¨éå½çæ
åµä¸ï¼å³å¦æå½æ° f
å¨è°ç¨æ ä¸åºç°å¤æ¬¡ï¼f.arguments
çå¼è¡¨ç¤ºæè¿ä¸æ¬¡è°ç¨è¯¥å½æ°æ¶çåæ°ã
妿彿°æ²¡ææ£å¨è¿è¡çãæªå®æçè°ç¨ï¼å³å½æ°å·²è¢«è°ç¨ä½å°æªè¿åï¼ï¼arguments
屿§çå¼é常为 null
ã
请注æï¼ECMAScript è§èåªè§å®äº Function.prototype
å
·æä¸ä¸ªåå§ç arguments
访é®å¨ï¼å¯¹äºä»»ä½ get
æ set
请æ±é½æ æ¡ä»¶å°æåº TypeError
ï¼ç§°ä¸ºâæ¯ä¸¸è®¿é®å¨âï¼ï¼èä¸å¼æå®ç°ä¸å
许æ¹åæ¤è¯ä¹ï¼é¤éæ¯éä¸¥æ ¼çæ®é彿°ãï¼å¯¹äºéä¸¥æ ¼çæ®é彿°ï¼arguments
屿§çå®é
è¡ä¸ºå¦æä¸æ¯æåºé误ï¼å该è¡ä¸ºç±å®ç°å®ä¹ãä¾å¦ï¼Chrome å°å
¶å®ä¹ä¸ºèªæçæ°æ®å±æ§ï¼è Firefox å Safari æ©å±äºåå§çæ¯ä¸¸è®¿é®å¨ Function.prototype.arguments
ï¼ä»¥ç¹æ®å¤çéä¸¥æ ¼å½æ°ç this
å¼ã
(function f() {
if (Object.hasOwn(f, "arguments")) {
console.log(
"arguments æ¯å¸¦ææè¿°ç¬¦çèªæå±æ§",
Object.getOwnPropertyDescriptor(f, "arguments"),
);
} else {
console.log(
"f 没æèªæçå为 arguments ç屿§ãå°è¯è·å f.[[Prototype]].arguments",
);
console.log(
Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(f),
"arguments",
).get.call(f),
);
}
})();
// å¨ Chrome ä¸ï¼
// arguments æ¯å¸¦ææè¿°ç¬¦çèªæå±æ§ {value: Arguments(0), writable: false, enumerable: false, configurable: false}
// å¨ Firefox ä¸ï¼
// f 没æèªæçå为 arguments ç屿§ãå°è¯è·å f.[[Prototype]].arguments
// Arguments { ⦠}
ç¤ºä¾ ä½¿ç¨ arguments 屿§
function f(n) {
g(n - 1);
}
function g(n) {
console.log(`ä¹åï¼${g.arguments[0]}`);
if (n > 0) {
f(n);
}
console.log(`ä¹åï¼${g.arguments[0]}`);
}
f(2);
console.log(`è¿åï¼${g.arguments}`);
// è¾åºï¼
// ä¹åï¼1
// ä¹åï¼0
// ä¹åï¼0
// ä¹åï¼1
// è¿åï¼null
è§è
ä¸å±äºä»»ä½è§èã
æµè§å¨å ¼å®¹æ§ åè§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