Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript和类似的脚本语言会从强类型中受益吗?_Javascript_Strong Typing_Scripting Languages - Fatal编程技术网

javascript和类似的脚本语言会从强类型中受益吗?

javascript和类似的脚本语言会从强类型中受益吗?,javascript,strong-typing,scripting-languages,Javascript,Strong Typing,Scripting Languages,我今天刚想起来。我花了一些时间在IE调试模式下,像往常一样浏览网页,哦,天哪,我看到了很多错误:)大多数这些错误是因为某些值的类型与预期的不同(至少就我解释错误消息而言) JavaScript和类似脚本语言不是强类型的原因是什么?这仅仅是为了让语言“更容易”理解和更容易访问,还是缺少“编译时”才是真正的问题?我自己的观点:您可以在执行脚本之前解析脚本。这将捕获大多数类型错误,并且意味着用户不必看到部分执行然后终止的scriptresult。更好的是,如果它有一个解析器,那么调试它会容易得多:)它

我今天刚想起来。我花了一些时间在IE调试模式下,像往常一样浏览网页,哦,天哪,我看到了很多错误:)大多数这些错误是因为某些值的类型与预期的不同(至少就我解释错误消息而言)


JavaScript和类似脚本语言不是强类型的原因是什么?这仅仅是为了让语言“更容易”理解和更容易访问,还是缺少“编译时”才是真正的问题?

我自己的观点:您可以在执行脚本之前解析脚本。这将捕获大多数类型错误,并且意味着用户不必看到部分执行然后终止的scriptresult。更好的是,如果它有一个解析器,那么调试它会容易得多:)

它从没有被键入中获得了灵活性。我个人喜欢弱类型语言

所以答案是有好处也有坏处


对于希望在浏览器中使用强类型语言的用户,可以使用GWT和脚本。

我在ActionScript 2中构建了一个快速原型框架,用于在线学习。我最大的抱怨是AS2不是强类型的,它在调试时让我很头疼。我认为强类型化使代码更容易阅读。我认为弱类型语言提供了更大的灵活性


当我不得不回头看看6个月前写的代码到底是怎么回事时,我更倾向于可读性。

它肯定应该有强大的打字功能。ActionScript3是强类型的,但如果需要动态对象,它仍然具有原型继承和通配符类型


有了这个功能没有任何坏处,而且我必须说,对于一个中到大型的项目来说,强大的打字功能可以避免大量的问题。为了充分利用它,您需要IDE支持,以便它能够报告错误并提供自动完成选项,但是如果Javascript有真正的类和强大的类型,它将进入一个全新的世界

我最喜欢大多数脚本语言的弱类型方面。除了性能之外,我想要强类型语言的唯一原因是工具重构强类型语言比重构弱类型语言更容易

javascript和类似的脚本语言会从强类型中受益吗

是的,他们会,介绍一个:

类型系统 JavaScript 2.0支持类型的概念, 可以将其视为所有 可能的值。有一些内置的 类型,例如对象、编号和 一串每个用户定义的类(第6节) 也是一种类型

另见:


一般来说,对强类型的支持为编译和优化过程提供了许多有趣的机会。

微软在使用typescript解决强类型问题方面已经走了很长的路。看看:


你可能应该发表你的观点作为答案——以衡量人们(dis)对澄清的认同程度:没有什么能阻止你解析javascript或任何其他动态语言。你所说的是对解析文本进行语义评估。添加了我自己的观点作为答案。ye,Jared,但假设有一个浏览器环境,我知道没有一个能做到这一点(至少据我所知?)。如果你有一种强类型脚本语言,我想你会被迫使用它AS2是强类型的。只需在变量后指定类型。VarVector1:Vector+1表示“添加它有什么害处”;不想要它的人不必使用它。6年后,这一点非常接近实现——Javascript有了真正的类。尽管如此,我对强类型不太确定。我不会说它们有这么多的灵活性,因为它们引入了一整类可以自动防止的错误,并且它们这样做的同时不提供额外的功能。您可以保证传递该函数的对象将支持您所需的方法,但除非执行该行代码,否则您永远不会知道……此外,强类型似乎可以消除所有类的错误,并且可以轻松记住您的对象支持的方法。使用Javascript,相同类型的两个对象可以有完全不同的方法。哎呀!