Some containers don’t let you get the length (mainly Dictionaries and POOs iirc). However, when you can get it (ie from an Array, Vector or List) it’ll be the length property.
There’s not an overwhelmingly massive difference between for each and regular for loops in terms of performance. Not anywhere near as much as between for each and Array.forEach() in any case!
Two principles apply; Keep It Simple Stupid and No Premature Optimization! In AS3 particularly, the simpler solution is often the best and if for each makes for more readable code I’d stick with that.
An example, a few years ago I was getting bad lag in one of my games. I thought it was my random number generation, which I was doing hundreds to thousands of times per frame and was a LOT more inefficient than it could have been (allocating obects, lots of vars, complex maths etc). I spent a whole working day (6 hours) updating it and replacing all of my “new RandomNumber” stuff with a static version. I gained… nothing; my game ran exactly the same as before, not a single frame per second difference. Turned out that switching to using PreRotations was what I needed to do and my problem had nothing to do with Random Numbers at all!
Moral of the story… be careful of micro-optimisation, especially sweeping generalizations like replacing all of your for each loops with for loops.