Bytecode interpreters, as opposed to scripting languages, have a very real advantage that is unrelated to speed: you can use any language. If the target is the .net CLR, you can use C#, VB.NET, C++, F#...plus about a hundred others. Going with the .NET platform allows the language to be flexible, whereas with javascript you're stuck with a hacked language with no internal consistency, ridiculously stupid semantics in some cases, and a loosely typed straitjacket that causes problems in any larger application. Of course if we're using .NET and you LIKE the javascript language, a compiler could easily be developed that compiles it to .NET IL. The opposite is not true.