为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript是非类型化语言吗?

JavaScript是非类型化语言吗?

紫衣仙女 2019-10-05 14:53:44
我发现有人将JavaScript称为“动态,弱类型”语言,但有人甚至说“未类型”?到底是什么
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

JavaScript 未输入类型:

//img1.sycdn.imooc.com//5d983e1c0001432206740382.jpg

甚至布伦丹·艾希(Brendan Eich)也是这样。在Twitter上,他回复了一个与此问题相关的话题:


学术类型使用“无类型”来表示“没有静态类型”


因此,问题在于untyped有一些不同的定义。


在上面的答案之一中已经讨论了一个定义-运行时不标记值,而只是将每个值视为位。JavaScript 会标记值,并基于这些标记具有不同的行为。因此,JavaScript显然不适合此类。


另一个定义来自编程语言理论(Brendan所指的学术东西)。在此域中,未类型化只是意味着所有内容都属于一个类型。


为什么?因为一种语言只有在可以证明类型对齐时才会生成程序(又称Curry-Howard对应;类型是定理,程序是证明)。这意味着使用非类型化语言:


程序总是生成

因此类型总是匹配的

因此必须只有一个类型

与输入语言相反:


可能未生成程序

因为类型可能不匹配

因为程序可以包含多种类型

因此,在PLT中,untyped仅表示动态类型,而typed仅表示静态类型。JavaScript绝对不在此类别中。


查看完整回答
反对 回复 2019-10-05
  • 3 回答
  • 0 关注
  • 539 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信