arguments[Symbol.iterator]()

Baseline 已廣泛支援

此功能已相當成熟,可在多種裝置和瀏覽器版本上使用。自 ⁨2016 年 7 月⁩起,所有瀏覽器均已支援此功能。

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

瀏覽器相容性

另見