In the past, Javascript was interpreted — and nothing more.
In the past two years or so, browsers have been implementing new Javascript engines, trying to compile some portions of code, to speed Javascript up.
For more informations on what has been done for Mozilla Firefox, you should take a look at :
- JavaScript:TraceMonkey
- an overview of TraceMonkey
For more informations about Chrome’s engine, you’ll want to read :
- Dynamic Machine Code Generation
And for webkit (safari) :
- Announcing SquirrelFish
Not sure what has been (or is being) done on other browsers — but I suppose the same kind of thing exists, or will exist.
And, of course, for more informations : JavaScript engine, on wikipedia.