It’s because you’re looping through the array using for...in
which is generally used for looping over properties of objects. The javascript engine is probably casting to a string because the string type is suitable for names of object properties.
Try this more traditional approach:
stuff = [];
stuff[0] = 3;
for(var i=0; i<stuff.length; i++) {
var x = stuff[i];
alert(typeof x);
}