我发现有人将JavaScript称为“动态,弱类型”语言,但有人甚至说“未类型”?到底是什么
3 回答
HUH函数
TA贡献1836条经验 获得超4个赞
JavaScript 未输入类型:
甚至布伦丹·艾希(Brendan Eich)也是这样。在Twitter上,他回复了一个与此问题相关的话题:
学术类型使用“无类型”来表示“没有静态类型”
因此,问题在于untyped有一些不同的定义。
在上面的答案之一中已经讨论了一个定义-运行时不标记值,而只是将每个值视为位。JavaScript 会标记值,并基于这些标记具有不同的行为。因此,JavaScript显然不适合此类。
另一个定义来自编程语言理论(Brendan所指的学术东西)。在此域中,未类型化只是意味着所有内容都属于一个类型。
为什么?因为一种语言只有在可以证明类型对齐时才会生成程序(又称Curry-Howard对应;类型是定理,程序是证明)。这意味着使用非类型化语言:
程序总是生成
因此类型总是匹配的
因此必须只有一个类型
与输入语言相反:
可能未生成程序
因为类型可能不匹配
因为程序可以包含多种类型
因此,在PLT中,untyped仅表示动态类型,而typed仅表示静态类型。JavaScript绝对不在此类别中。
添加回答
举报
0/150
提交
取消