Оператор in

Оператор in проверят есть ли свойство у объекта или массива и возвращает true либо false.

Синтаксис

javascript'свойство' in объект;

Пример

Посмотрим как работает оператор in:

javascriptlet obj = {
  name: 'Nick',
  age:  23,
};

console.log('name' in obj); // true
console.log('age'  in obj); // true
console.log('test' in obj); // false

Пример

Посмотрим как можно применить оператор in для проверки свойства в массиве:

javascriptlet arr = ['green', 'red', 'blue', 'pink']

console.log(0 in arr); // true, есть элемент с таким индексом
console.log(4 in arr); // false, нет элемента с таким индексом 
console.log('four' in arr); // false, нужен индекс, а не значение элемента
console.log('length' in arr); // true, у массива есть такое свойство 

Пример

Часто вместо in проверяют, что свойство в логическом контекст - true:

javascriptlet obj = {
  name: 'John',
  height: '177',
};

if ('name' in obj) {} // проверка в условии с in
if (obj.name) {} // но чаще пишут так

Оба варианта можно использовать. Но всегда стоит помнить, что пустая строка, 0, null, NaN и undefined в логическом контексте - false. Следовательно, если свойство может иметь подобное значение - стоит использовать in.