According to some Calculus textbooks, 0^0 is an "indeterminate form." What mathematicians mean by "indeterminate form" is that in some cases we think about it as having one value, and in other cases we think about it as having another.
When evaluating a limit of the form 0^0, you need to know that limits of that form are "indeterminate forms," and that you need to use a special technique such as L'Hopital's rule to evaluate them. For instance, when evaluating the limit Sin[x]^x (which is 1 as x goes to 0), we say it is equal to x^x (since Sin[x] and x go to 0 at the same rate, i.e. limit as x->0 of Sin[x]/x is 1). Then we can see from the graph of x^x that its limit is 1.
Other than the times when we want it to be indeterminate, 0^0 = 1 seems to be the most useful choice for 0^0 . This convention allows us to extend definitions in different areas of mathematics that would otherwise require treating 0 as a special case. Notice that 0^0 is a discontinuity of the function f(x,y) = x^y, because no matter what number you assign to 0^0, you can't make x^y continuous at (0,0), since the limit along the line x=0 is 0, and the limit along the line y=0 is 1.
This means that depending on the context where 0^0 occurs, you might wish to substitute it with 1, indeterminate or undefined/nonexistent.
Some people feel that giving a value to a function with an essential discontinuity at a point, such as x^y at (0,0), is an inelegant patch and should not be done. Others point out correctly that in mathematics, usefulness and consistency are very important, and that under these parameters 0^0 = 1 is the natural choice.