The in returns true if the specified property is in the specified object or its prototype chain.
prop in object
propobjectThe 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
in with deleted or undefined propertiesIf 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
The in operator returns true for properties in the prototype chain.
'toString' in {}; // returns true
| 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. |
| Desktop | ||||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
| Basic support | Yes | Yes | 1 | Yes | Yes | Yes |
| Mobile | |||||||
|---|---|---|---|---|---|---|---|
| Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
| Basic support | Yes | Yes | Yes | 4 | Yes | Yes | Yes |
| Server | |
|---|---|
| Node.js | |
| Basic support | Yes |
for...indeleteObject.prototype.hasOwnProperty()Reflect.has()
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in