L'opérateur in
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 juillet 2015.
L'opérateur in renvoie true si une propriété donnée appartient à l'objet donné (directement ou via sa chaîne de prototype).
Exemple interactif
const car = { make: "Honda", model: "Accord", year: 1998 }; console.log("make" in car); // Expected output: true delete car.make; if ("make" in car === false) { car.make = "Suzuki"; } console.log(car.make); // Expected output: "Suzuki" Syntaxe
propriété in nomObjet; Paramètres
Description
Les exemples suivants illustrent certaines utilisation de l'opérateur in.
// Tableaux var arbres = ["sapin", "hêtre", "cèdre", "chêne", "érable"]; 0 in arbres; // renvoie true 3 in arbres; // renvoie true 6 in arbres; // renvoie false "hêtre" in arbres; // renvoie false (l'indice doit être spécifié, pas la valeur à cet indice) "length" in arbres; // renvoie true (length est une propriété des objets Array) Symbol.iterator in arbres; // renvoie true (les tableaux sont itérables, à partir d'ES6) // Objets prédéfinis "PI" in Math; // renvoie true var ma_chaine = new String("corail"); "length" in ma_chaine; // renvoie true // Objets personnalisés var voiture = { marque: "Honda", modèle: "Accord", année: 1998 }; "marque" in voiture; // renvoie true "modèle" in voiture; // renvoie true "marque" in voiture; // renvoie true "Accord" in voiture; // renvoie false L'opérande droit doit toujours être du type objet (et pas un autre type primitif). Par exemple, on peut utiliser une chaîne créée avec le constructeur String, mais pas une chaîne littérale.
var couleur1 = new String("vert"); "length" in couleur1; // renvoie true var couleur2 = "corail"; "length" in couleur2; // génère une erreur (couleur n'est pas un objet String) Utilisation de l'opérateur in avec des propriétés supprimées ou indéfinies
Si une propriété est supprimée avec l'opérateur delete, l'opérateur in renvoie false pour cette propriété.
var voiture = { marque: "Honda", modèle: "Accord", année: 1998 }; delete voiture.marque; "marque" in voiture; // renvoie false var arbres = new Array("sapin", "hêtre", "cèdre", "chêne", "érable"); delete arbres[3]; 3 in arbres; // renvoie false Si une propriété est définie à undefined mais n'est pas supprimée, l'opérateur in renverra true pour cette propriété.
var voiture = { marque: "Honda", modèle: "Accord", année: 1998 }; voiture.marque = undefined; "marque" in voiture; // renvoie true var arbres = new Array("sapin", "hêtre", "cèdre", "chêne", "érable"); arbres[3] = undefined; 3 in arbres; // renvoie true Propriétés héritées
L'opérateur in renvoie true pour les propriétés qui appartiennent à la chaîne de prototypes. SI on souhaite la présence d'une propriété non-héritée, on utilisera plutôt Object.prototype.hasOwnProperty().
"toString" in {}; // renvoie true Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-relational-operators> |