javascript - 为什么 Javascript 文档在语法上将函数的参数定义为嵌套数组?

标签 javascript node.js function ecmascript-6 documentation

我不知道怎么问这个问题,但在我研究 Javascript 或 Node.js 的文档时,他们正在定义类似这样的语法。

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

这里所有的参数(value1[, value2[, ...[, valueN]]]) 都被定义为嵌套数组。

它的实际含义,以及

他们为什么不直接定义这样的东西。

var new_array = old_array.concat(...values)

var new_array = old_array.concat(valueList)

最佳答案

它与数组无关(除了你的例子取自数组类型方法的文档)。方括号表示可选参数,这是大多数编程语言和工具中使用的约定。例如,ls 命令的帮助:

用法:ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [文件 ...]

...或cp:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory

您的示例意味着该函数至少接受一个参数,并且可以添加更多参数,并用逗号分隔。根据the docs这些值可以是数组和/或连接成新数组的值。因此,每个 valueN 都可以是一个数组或一个要添加到返回数组的值。

不使用... 符号的原因可能是因为方括号已经使用了几十年并且被广泛使用,所以无论主题是什么,读者都会熟悉语法。

关于javascript - 为什么 Javascript 文档在语法上将函数的参数定义为嵌套数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345811/

相关文章:

node.js - 从 Node.js BotBuilder 中的 conversationUpdate 事件启动对话

node.js - MongoDB 过滤器 $lookup 具有日期范围的文档

javascript - 如何仅将类添加到父行而不是全部

javascript - 如何从另一个文件调用类中的函数

javascript - Webview:window.close 不起作用

javascript - 什么更快?两次比较还是一次比较加一次逻辑检查?

node.js - 实时应用程序 - socket.io (node.js) 的替代方案

javascript - 如何使用javascript计算下一个修订号

javascript - 包装函数和 function.length

javascript - 如何模拟按住单击按钮类