title: Iterating through object with `Object.keys().forEach()` changes value type
body: <p>Consider the following example code:</p>
  <pre><code>let obj = {a: '1', b: '2'};
  
  Object.keys(obj).forEach(function(key, val){
      console.log(typeof val);    //returns: number
  });
  
  console.log(typeof obj['a']);   //returns: string
  </code></pre>
  <p>I find this behaviour very interesting. Why does it do this? I assume this has something to do with JavaScript in certain situations auto-parsing variables (such as concatenating a number to a string) and the passing of said variable to a callback function.</p>
  <p>I am also curious if there is a simple way of preserving the original value type? I know you could force a particular type but it there a way to have it stay a number or a string based on what was originally passed short of adding a variable that would then be set to the variable type?</p>