Нашел в коде Javascript библиотеки вот такую вот конструкцию:
Очень заинтересовало, как это работает. До этого использовал оператор 'in' только для итерации, а тут вот такая вот проверка интересная. Покопавшись я обнаружил для себя, что оператор 'in' также можно использоваться для проверки существования метода объекта, свойства объекта и индекса элемента в массиве. Ниже несколько примеров:
Чем лучше такая вот проверка чем просто проверять так?
Ответ прост, потому как ваш массив может содержать элемент под этим индексом, но значение этого элемента будет 'undefined', в таком случае вы не сможете быть уверенны в его существовании. Оператор 'in' проверяет именно существование элемента/свойства/метода. Возможно вы будете его не часто использовать или вовсе не будет использовать, но думаю, что знать это будет очень даже неплохо.
if ('is_public' in profile) {
...
}
Очень заинтересовало, как это работает. До этого использовал оператор 'in' только для итерации, а тут вот такая вот проверка интересная. Покопавшись я обнаружил для себя, что оператор 'in' также можно использоваться для проверки существования метода объекта, свойства объекта и индекса элемента в массиве. Ниже несколько примеров:
var Test = function() { return this; };
Test.prototype.myFunc = function() {};
var testInstance = new Test();
console.info('myFunc' in testInstance); // will return 'true'
console.info('myFunc2' in testInstance); // will return 'false'
var myObject = {test: 1};
console.info('test' in myObject); // will return 'true'
console.info('test1' in myObject); // will return 'false'
var myArray = [4,3,1];
console.info(1 in myArray); // will return 'true'
console.info(3 in myArray); // will return 'false'
Чем лучше такая вот проверка чем просто проверять так?
var myArray = [4,3,1];
if (myArray[3] != undefined) {
...
}
Ответ прост, потому как ваш массив может содержать элемент под этим индексом, но значение этого элемента будет 'undefined', в таком случае вы не сможете быть уверенны в его существовании. Оператор 'in' проверяет именно существование элемента/свойства/метода. Возможно вы будете его не часто использовать или вовсе не будет использовать, но думаю, что знать это будет очень даже неплохо.