--- title: in operator slug: Web/JavaScript/Reference/Operators/in translation_of: Web/JavaScript/Reference/Operators/in ---
O operador in
retorna true
se a propriedade especificada estiver no objeto especificado ou na sua cadeia de protótipo (prototype chain) desde objeto.
prop in object
prop
object
Os exemplos a seguir mostram alguns usos do operador in
.
// Arrays var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; 0 in trees // retorna true 3 in trees // retorna true 6 in trees // retorna false 'bay' in trees // retorna false (você precisa especificar o // número do índice, não o valor naquele índice) 'length' in trees // retorna true (length é uma propridade do Array) Symbol.iterator in trees // retorna true (arrays são iteráveis, funciona apenas na ES2015+) // Objetos predefinidos 'PI' in Math // retorna true // Objetos personalizados var mycar = {make: 'Honda', model: 'Accord', year: 1998}; 'make' in mycar // retorna true 'model' in mycar // retorna true
Você precisa especificar um objeto no lado direito do operador in
. Por exemplo, você pode especifica um string criado com o construtor String,
mas você não pode especificar um string literal.
var color1 = new String('green'); 'length' in color1 // retorna true var color2 = 'coral'; // gera um erro (color2 não é um objeto String) 'length' in color2
in
com propriedade removida ou undefinedSe você remover uma propriedade com o operador delete
, o operador in
retorna false
para essa propriedade.
var mycar = {make: 'Honda', model: 'Accord', year: 1998}; delete mycar.make; 'make' in mycar; // retorna false var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple'); delete trees[3]; 3 in trees; // retorna false
Se você definir uma propriedade como {{jsxref("Global_Objects/undefined", "undefined")}}, mas não a remover, o operador in
retorna true
para essa propriedade.
var mycar = {make: 'Honda', model: 'Accord', year: 1998}; mycar.make = undefined; 'make' in mycar; // retorna true
var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple'); trees[3] = undefined; 3 in trees; // retorna true
O operador in
retorna true
para propriedades que estão na cadeida de protótipo (prototype chain).
'toString' in {}; // retorna true
Especificação | Situação | Comentário |
---|---|---|
{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES2015', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ES2015')}} | |
{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES3')}} | Definição inicial. Implementado no JavaScript 1.4. |
{{Compat("javascript.operators.in")}}
for...in
delete