I've just discovered the ECMAScript 7 feature a**b as an alternative for Math.pow(a,b) (MDN Reference) and came across a discussion in that post, in which they apparently behave differently. I've tested it in Chrome 55 and can confirm that the results differ.
Math.pow(99,99) returns 3.697296376497263e+197
whereas
99**99 returns 3.697296376497268e+197
So logging the difference Math.pow(99,99) - 99**99 results in -5.311379928167671e+182.
So far it could be said, that it's simply another implementation, but wrapping it in a function behaves different again:
function diff(x) {
  return Math.pow(x,x) - x**x;
}
calling diff(99) returns 0.
Why is that happening?
As xszaboj pointed out, this can be narrowed down to this problem:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
 
     
    