Javascript 程序是部分程序还是全部程序?

Are Javascript Procedures Partial or Total?

这个问题可能太具体了;但是,我相信知识渊博的人提供的各种答案对于理解 Javascript(我的问题的语言基础)等动态语言可能会非常有帮助。

为了让大家阅读到一个共同的地方,这里有一些文献:

Liskov 的 (2001) Java 中的程序开发将整个程序描述为 如果..."its behavior is specified for all legal inputs," (54)。那么,如果允许非法输入并且该输入的行为未定义,则部分(正如她也写道)是部分的。

虽然上面没有解释一些微妙之处,但根据我自己的研究,完全和部分之间的区别似乎非常明显,特别是对于静态类型的语言。根据我的理解,术语 "partial" 最常用于指代允许破坏过程的形式参数——在过程主体中导致未处理错误的参数。

程序是用动态类型语言编写的(此处用于原始输入)是部分还是全部?

如果你有这本书,另一页要仔细看是 p。 58(如果没有,您可以在某处在线找到非常可靠的 pdf)。

注(关于评论):

我理解部分和全部的概念与语言无关,具体指的是每个过程;的实施;但是,我问的是一般的动态类型语言,其中 "legality" 的输入 - 以及这些规则的执行 - 似乎不太明确

在 JavaScript 的上下文中,"legal inputs" 的含义存在一些不确定性。可以使用任意数量的参数调用函数,而不管它是如何定义的。

也就是说,我认为 JavaScript 函数也不是天生的。一般情况下无法回答。当然部分函数很容易产生,但我认为总函数(根据你的定义)也是可能的:

function total_function(i) {
  return 1;
}

在这里,所有可能的输入都会产生 1 的输出。以 total_function()total_function(1, 2, 3, 4, 5, 6, 7)total_function('this is a string').

调用函数并不重要