The in
operator returns true
if the specified property is in the specified object.
Syntax
prop in objectName
Parameters
prop
- A string or symbol representing a property name or array index (non-symbols will be coerced to strings).
objectName
- Name of an object.
Description
The following examples show some uses of the in
operator.
// Arrays var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; 0 in trees // returns true 3 in trees // returns true 6 in trees // returns false 'bay' in trees // returns false (you must specify the // index number, not the value at that index) 'length' in trees // returns true (length is an Array property) Symbol.iterator in trees // returns true (arrays are iterable, works only in ES2015+) // Predefined objects 'PI' in Math // returns true // Custom objects var mycar = {make: 'Honda', model: 'Accord', year: 1998}; 'make' in mycar // returns true 'model' in mycar // returns true
You must specify an object on the right side of the in
operator. For example, you can specify a string created with the String
constructor, but you cannot specify a string literal.
var color1 = new String('green'); 'length' in color1 // returns true var color2 = 'coral'; // generates an error (color2 is not a String object) 'length' in color2
Using in
with deleted or undefined properties
If you delete a property with the delete
operator, the in
operator returns false
for that property.
var mycar = {make: 'Honda', model: 'Accord', year: 1998}; delete mycar.make; 'make' in mycar; // returns false var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple'); delete trees[3]; 3 in trees; // returns false
If you set a property to undefined
but do not delete it, the in
operator returns true for that property.
var mycar = {make: 'Honda', model: 'Accord', year: 1998}; mycar.make = undefined; 'make' in mycar; // returns true
var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple'); trees[3] = undefined; 3 in trees; // returns true
Inherited properties
The in
operator returns true
for properties in the prototype chain.
'toString' in {}; // returns true
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262) The definition of 'Relational Operators' in that specification. |
Draft | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Relational Operators' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The in Operator' in that specification. |
Standard | |
ECMAScript 3rd Edition (ECMA-262) The definition of 'The in Operator' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.4. |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
See also
Document Tags and Contributors
Tags:
Contributors to this page:
jameshkramer,
nmve,
kdex,
fscholz,
kamoroso94,
lewisje,
Sebastianz,
Havvy,
mrienstra,
onlyofrajat,
Sheppy,
Brettz9,
ethertank,
moreati,
mattcg,
Sevenspade,
Mgjbot,
Nickolay,
Dria
Last updated by:
jameshkramer,