title: JSON.parse throws errors while eval doesn't on the same strings. Why?
body: <p>suppose I have something like</p>
  
  <pre><code>var a = '["\t"]'
  </code></pre>
  
  <p>If I do</p>
  
  <pre><code>eval('var result = ' + a)
  </code></pre>
  
  <p>Everything works fine. But if I do</p>
  
  <pre><code>var result = JSON.parse(a)
  </code></pre>
  
  <p>It throws error: Unexpected token.
  <br>
  Same happens with \b, \f: works with eval, while fails with JSON.parse. Why? Shouldn't the parser behave in the same way when encounters "\t"?<Br>
  <br>On the other hand, both eval and JSON.parse fail with a \n (as expected), but they also both fail with a \r. Why is this?<br>
  <br>
  I'm a little bit confused with all this so could anybody explain what is going on? If possible with details: how is the parser behaving in the two cases?</p>