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 |
瀏覽器相容性
載入中…