arguments[Symbol.iterator]()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2016.

Phương thức [Symbol.iterator]() của các đối tượng arguments triển khai giao thức iterable và cho phép các đối tượng arguments được sử dụng bởi hầu hết các cú pháp mong đợi iterable, như cú pháp spread và vòng lặp for...of. Nó trả về một đối tượng array iterator yield giá trị của mỗi chỉ số trong đối tượng arguments.

Giá trị ban đầu của thuộc tính này là cùng một đối tượng hàm như giá trị ban đầu của thuộc tính Array.prototype.values (và cũng giống như Array.prototype[Symbol.iterator]()).

Cú pháp

js
arguments[Symbol.iterator]()

Tham số

Không có.

Giá trị trả về

Giá trị trả về giống như Array.prototype.values(): một đối tượng iterator iterable mới yield giá trị của mỗi chỉ số trong đối tượng arguments.

Ví dụ

Duyệt qua bằng vòng lặp for...of

Lưu ý rằng bạn hiếm khi cần gọi phương thức này trực tiếp. Sự tồn tại của phương thức [Symbol.iterator]() làm cho các đối tượng arguments có thể duyệt qua, và các cú pháp duyệt như vòng lặp for...of tự động gọi phương thức này để lấy iterator để duyệt.

js
function f() {
  for (const letter of arguments) {
    console.log(letter);
  }
}
f("w", "y", "k", "o", "p");

Tự điều khiển iterator thủ công

Bạn vẫn có thể gọi thủ công phương thức next() của đối tượng iterator được trả về để đạt được quyền kiểm soát tối đa đối với quá trình duyệt.

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");

Thông số kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-createunmappedargumentsobject
ECMAScript® 2027 Language Specification
# sec-createmappedargumentsobject

Tương thích trình duyệt

Xem thêm