Початковим значенням властивості @@iterator
є та сама функція, яка є початковим значенням властивості values()
.
Синтаксис
arr[Symbol.iterator]()
Значення, що повертається
Початкове значення, що надається ітератором values()
. За замовчуванням, використання arr[Symbol.iterator]
поверне функцію values()
.
Приклад
Перебір за допомогою циклу for...of
var arr = ['a', 'b', 'c', 'd', 'e'];
var eArr = arr[Symbol.iterator]();
// ваш переглядач має підтримувати цикл for..of
// та змінні, оголошені через let, у циклах for
// також можна використати const та var
for (let letter of eArr) {
console.log(letter);
}
Альтернативний перебір
var arr = ['а', 'б', 'в', 'г', 'ґ'];
var eArr = arr[Symbol.iterator]();
console.log(eArr.next().value); // а
console.log(eArr.next().value); // б
console.log(eArr.next().value); // в
console.log(eArr.next().value); // г
console.log(eArr.next().value); // ґ
Випадок використання позначення через квадратні дужки
Використовувати цей синтаксис замість позначення через крапку (Array.prototype.values()
) зручно, коли ви не знаєте заздалегідь, яким буде об'єкт. Якщо ви маєте функцію, що приймає ітератор та перебирає значення, але не знаєте, чи матиме цей об'єкт метод [Iterable].prototype.values. Це може бути вбудований об'єкт, такий як String, або користувацький об'єкт.
function logIterable(it) {
var iterator = it[Symbol.iterator]();
// ваш переглядач має підтримувати цикл for..of
// та змінні, оголошені через let, у циклах for
// також можна використати const та var
for (let letter of iterator) {
console.log(letter);
}
}
// Масив
logIterable(['а', 'б', 'в']);
// а
// б
// в
// рядок
logIterable('абв');
// а
// б
// в
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype[@@iterator]()' in that specification. |
Standard | Початкове визначення. |
ECMAScript (ECMA-262) The definition of 'Array.prototype[@@iterator]()' in that specification. |
Living Standard |
Сумісність з веб-переглядачами
BCD tables only load in the browser