L'opérateur in

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 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

js
propriété in nomObjet;

Paramètres

propriété

Une expression évaluée en un nombre ou une chaîne de caractères qui représente le nom d'une propriété ou l'indice d'un tableau.

nomObjet

Le nom de l'objet qu'on souhaite inspecter.

Description

Les exemples suivants illustrent certaines utilisation de l'opérateur in.

js
// 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.

js
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é.

js
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é.

js
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().

js
"toString" in {}; // renvoie true

Spécifications

Specification
ECMAScript® 2025 Language Specification
# sec-relational-operators

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
in

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi