Whether or not 0^0 has a value is very context dependent. When you are in combinatorial contexts, so all numbers in place are natural numbers, a^b counts the number of maps from a set of size b to a set of size a, and there is a convention that there is an "empty map" from the empty set to itself (or more generally, from the empty set to any other set), which is why we define 0^(0)=1 in combinatorial contexts. If we accept that there is an empty map {}-->{1,2,3} making 3^(0)=1, then it isn't too much of a stretch to say there is an empty map {}-->{}. Introducing negative whole numbers doesn't really complicate the discussion too much, and while we lose the nice interpretation, we have algebraic properties that make everything still work out in a nice manner.

However, if you start allowing fractions or real numbers you can start running into issues. x^(y) might not be well defined if x is negative and y isn't a whole number. And as x and y get closer to 0, x^y can get close to many different numbers depending on how they are getting closer (even if x and y always stay positive).

So because the function x^y is discontinuous at (0,0), we don't have any particular value that it makes sense to give 0^0 if we are working on a context that allows x and y to be small but not zero. After all, 0^(y)=0 if y is not zero, and x^(0)=1 if x is not zero. There is no good way to reconcile these two facts in a continuous context to define 0^(0).