IMHO it's fine to use 'in' in JS. As long as you know that it checks for the existence of a property, regardless of the value set. And also be aware that it checks properties in the prototype chain as well. If you don't want that behavior, use hasOwnProperty() instead.