arguments[Symbol.iterator]()
arguments 对象的 [Symbol.iterator]() 方法实现了可迭代协议,并允许 arguments 对象被大多数期望可迭代对象的语法所消费,例如扩展语法和for...of 循环。它返回一个数组迭代器对象,该对象按索引顺序生成 arguments 对象中的值。
此属性的初始值与 Array.prototype.values 属性的初始值是相同的函数对象(也与 Array.prototype[Symbol.iterator]() 相同)。
语法
js
arguments[Symbol.iterator]()
参数
无。
返回值
与 Array.prototype.values() 的返回值相同:一个新的可迭代迭代器对象,该对象按索引顺序生成 arguments 对象中的值。
示例
使用 for...of 循环进行迭代
请注意,你很少需要直接调用此方法。[Symbol.iterator]() 方法的存在使 arguments 对象可迭代,并且像 for...of 循环这样的迭代语法会自动调用此方法以获取迭代器进行循环。
js
function f() {
for (const letter of arguments) {
console.log(letter);
}
}
f("w", "y", "k", "o", "p");
手动创建迭代器
你仍然可以手动调用返回的迭代器对象的 next() 方法,以实现对迭代过程的最大控制。
js
function f() {
const argsIter = arguments[Symbol.iterator]();
console.log(argsIter.next().value); // w
console.log(argsIter.next().value); // y
console.log(argsIter.next().value); // k
console.log(argsIter.next().value); // o
console.log(argsIter.next().value); // p
}
f("w", "y", "k", "o", "p");
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-createunmappedargumentsobject |
| ECMAScript® 2026 语言规范 # sec-createmappedargumentsobject |
浏览器兼容性
加载中…