title: What is wrong with for(let key in obj) in javascript? IDE warnings seem redundant
body: <p>I use phpstorm and over the past half a year or so it started warning me about code like this:</p>
  
  <pre><code>    for( let key in attachmentPaths ){
        requestObject.formData.attachments.push( fs.createReadStream(attachmentPaths[key]) )
      }
  </code></pre>
  
  <p>Warning on <code>[key]</code></p>
  
  <blockquote>
    <p>Possible iteration over unexpected (custom/inherited) members,
    probably missing hasOwnProperty check</p>
  </blockquote>
  
  <p>I understand the warning message, but i don't understand how a <code>for()</code> like this is bad?</p>
  
  <p>Surely additional checks to ensure the key exists with the object is silly as we are looping over the objects found keys..?</p>