Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence JavaScript
  4. Objets natifs standards
  5. Symbol
  6. Symbol.iterator

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Symbol.iterator

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨septembre 2016⁩.

Le symboleSymbol.iterator définit l'itérateur par défaut d'un objet. C'est l'itérateur qui sera utilisé parfor...of.

Exemple interactif

const iterable1 = {};iterable1[Symbol.iterator] = function* () {  yield 1;  yield 2;  yield 3;};console.log([...iterable1]);// Expected output: Array [1, 2, 3]

Description

Lorsqu'on doit itérer sur un objet (par exemple avec une bouclefor..of), sa méthode@@iterator est appelée sans argument et l'itérateur renvoyé par la méthode est utilisé pour récupérer les valeurs sur lesquelles itérer.

Certains types natifs possèdent un comportement par défaut pour l'itération, d'autres types (tels qu'Object) n'ont pas de tel comportement. Les types natifs qui disposent d'une méthode@@iterator sont :

Pour plus d'informations, voir aussila page sur les protocoles d'itération.

Attributs deSymbol.iterator
ÉcrivableNon
ÉnumérableNon
ConfigurableNon

Exemples

Itérables définis par l'utilisateur

Il est possible de construire un itérable de la façon suivante :

js
var monItérable = {};monItérable[Symbol.iterator] = function* () {  yield 1;  yield 2;  yield 3;};[...monItérable]; // [1, 2, 3]

On peut également définir ces itérables via des propriétés calculées dans des déclarations de classe ou dans des littéraux objets :

js
class Toto {  *[Symbol.iterator] () {    yield 1;    yield 2;    yield 3;  }}const monObj = {  *[Symbol.iterator] () {    yield "a";    yield "b";  }}[... new Toto] // [1, 2, 3][... monObj]   // ["a", "b"]

Itérables mal-formés

Si la méthode@@iterator d'un itérable ne renvoie pas un itérateur, on dira que c'est un itérable mal-formé. Utiliser un tel itérable peut provoquer des erreurs lors de l'exécution :

js
var itérableMalFormé = {}itérableMalFormé[Symbol.iterator] = () => 1[...itérableMalFormé] // TypeError: [] is not a function

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.iterator

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp