JavaScript本身并没有问题 - 它是一种完全良好的原型和动态语言。如果你来自面向对象的背景,那么可能需要花费一点时间学习,但这不是语言本身的错。
大多数人认为Javascript与Java相似,因为它们有类似的语法和名称,但实际上它更像Lisp。它非常适合用于DOM操作。
真正的问题在于浏览器编译它,这意味着它的工作方式取决于客户端而异。
不仅实际的DOM因浏览器而异,性能和布局也有很大差别。
根据问题的澄清编辑
假设支持多种解释型语言 - 你仍然会遇到同样的问题。各种浏览器仍然会存在错误并且具有不同的DOM。
此外,你必须在每种语言的浏览器中内置一个解释器或以某种方式安装为插件(在提供页面之前进行检查),这需要很长时间才能使Javascript保持一致。
你不能以相同的方式使用编译型语言 - 这样你就引入了一个难以轻易审查其执行内容的可执行文件。许多用户会选择不运行它。
那么编译代码的某种沙盒呢?对我来说,听起来像是Java Applets。或者Flash中的ActionScript。或者Silverlight中的C#。
那么某种IL标准呢?这有更大的潜力。用任何语言开发,然后将其编译为IL,浏览器 JITs 它。
除了,Javascript已经是那个 IL - 看看GWT。它允许你使用Java编写程序,但作为HTML和JS进行分发。
根据问题的进一步澄清编辑
JavaScript不是,或者说曾经不是,浏览器唯一支持的语言:在Internet Explorer的黑暗年代,你可以在IE中选择使用JavaScript或VBScript。技术上,IE甚至并没有运行JavaScript - 它运行的是JScript(主要是为了避免向Sun支付“java”这个词的费用,Oracle仍然拥有“JavaScript”的名称)。
问题在于,VBScript是专有的Microsoft技术,而且它本身也不是很好。尽管JavaScript在其他浏览器(如FireBug)中添加功能并获得顶级调试工具,但VBScript仍然只能在IE中使用,并且几乎无法调试(IE4/5/6中的开发工具根本不存在)。同时,VBScript还扩展成为操作系统中相当强大的脚本工具,但这些功能在浏览器中都不可用(当它们可用时,它们成为了巨大的安全漏洞)。
仍然有一些公司内部应用程序使用VBScript(有些依赖这些安全漏洞),它们仍在运行IE7(他们只停止使用IE6是因为微软最终将其淘汰了)。
让JavaScript达到目前的状态是一场噩梦,并花费了20年的时间。它仍然没有一致的支持,在某些浏览器中缺少语言特性(在1999年规定),需要大量的shim来补充。
向浏览器添加另一种解释语言面临两个主要问题:
需要注意的是,JavaScript并不是“完成”的 - 它仍在不断发展,以在新的浏览器中变得更好。 最新版本比浏览器的实现要领先几年,而且他们正在开发下一个版本。