The behaviour of Table is the same as Plot. If you write
x = 1;
Plot[x, {x, 0, 1}]
do you expect the same output as
Plot[1, {x, 0, 1}]
?
Plot and Table are designed to protect their iterator variable from outside interference.
You can bypass the protection with Evaluate, which forces evaluation of the argument before anything else.
Sometimes you cannot avoid Evaluate: the following does not work:
Table[x[t] /. DSolve[{x'[t] == -x[t], x[0] == 1}, x, t][[1]], {t, 1,
10}]
and you have to do it this way
Table[Evaluate[
x[t] /. DSolve[{x'[t] == -x[t], x[0] == 1}, x, t][[1]]], {t, 1, 10}]
But in this case you have to be careful of ouside interference with the variable t:
t = 1;
Table[Evaluate[
x[t] /. DSolve[{x'[t] == -x[t], x[0] == 1}, x, t][[1]]], {t, 1, 10}]
Evaluate can also be used on the iterator side, and it forces the iterator variable to become a constant:
t = 1;
Table[t, Evaluate[{t, 1, 10}]]