Many languages compile down to a hardware AssemblyLanguage. Some languages can be compiled to JavaByteCode.
Interpreters written in JavaScript have been created for some languages. Those languages can all, therefore, run on anything that runs JavaScript -- including most current WebBrowsers.
There is also AviBryant 's ClamatoSmalltalk, a SmallTalk dialect with a (compiled into) JavaScript implementation.
Mozilla's JavaScript engine, RhinoInterpreter, uses ByteCode as well, but it's only stored internally. A JS implementation of an alternate language could probably achieve better performance by translating the source language code into JavaScript, and then compiling it to ByteCode using eval().
Sadly, this is a case of AbstractionInversion. JavaScript is a high-level scripting language, one of the least efficient to run (see how it places in the shootout). A lower-level intermediate language would certainly be a more desireable target. JavaScript is all we got (in the browser, at least).
True. Unless you run a JavaApplet (ugh).
These programs are nice if you want to do some programming on a platform that doesn't have any good development tools, but does have a browser, such as a phone or PDA.
See also: AjaxSmalltalk, IotaAndJot, AbstractionInversion