答案 0 :(得分:64)
主要问题我认为它解决了创建大型多开发人员应用程序的问题。
在Javascript中,我可以编写完全有效的代码:
function x(y) {
return y*y;
}
document.write(x(3,4,5));
这将执行得很好,但它显然是一个错误。
现在由几个开发人员分离函数定义和函数调用,并在几千行代码的代码库上分离几个月。
原始函数x(y)最初可能是函数x(y,z,a),但随后被重构。这是javascript失败的地方,这就是dart有助于解决的问题。
编辑(2013年5月)除了我上面的答案,我认为仍然如此,我认为表演故事也变得非常引人注目。 Lars Bak和Kasper Lund的talk from Google I/O提供了一些证据。
答案 1 :(得分:41)
technical overview似乎很好地总结了差异:
类:当JavaScript 面向对象且不提供类(至少在其最新版本中)时,它实际上是基于原型的语言而不是基于类的语言。虽然这本身并不是更糟,但它与大多数主要的OO语言不同,这使得大多数人学习起来更加困难。
(可选)静态类型:您不能在纯JavaScript中进行静态类型(如:“由编译器检查”)。优点(和缺点)众所周知,并已得到广泛讨论。
对库的语言支持:“在此之前加载该文件”是实现库的一种非常原始的方式,大多数现代语言以某种方式明确支持库。
该页面还提到了工具,但这并不是语言之间的固有差异。当然,静态编译和键入的语言更容易为其编写好的工具,但这不是编程无法解决的根本区别。