gpt4 book ai didi

javascript - 了解 JavaScript 文档中使用的函数的表示法

转载 作者:行者123 更新时间:2023-11-28 18:35:09 24 4
gpt4 key购买 nike

每当我在JS中看到任何语法时,它都是用这种格式编写的

response.writeHead(statusCode[, statusMessage][, headers])
or
window.setTimeout(func, [delay, param1, param2, ...]);

为什么每个人都使用数组类型的表示法以及为什么逗号大部分放在数组内部???为了表示回调以及使用此语法,不明白为什么?

最佳答案

当您在文档中看到此内容时:

response.writeHead(statusCode[, statusMessage][, headers])

...这意味着您可以通过以下方式之一调用该方法:

response.writeHead(statusCode)
response.writeHead(statusCode, statusMessage)
response.writeHead(statusCode, headers)
response.writeHead(statusCode, statusMessage, headers)

因此语法符号中的方括号表示某些内容是可选的。这也意味着逗号必须这样显示。

悬空逗号

您的第二个示例实际上是一个不太准确的描述符:

window.setTimeout(func, [delay, param1, param2, ...]); 

因为如果从字面意义上理解,它似乎允许这样:

window.setTimeout(func, );

但这是无效的语法,至少在 JavaScript 中这个语法描述符似乎是这样的。

允许的参数数量

上面的描述符并没有明确表明您可以仅使用 2 或 3 个参数来调用此方法,例如:

window.setTimeout(alert('hi'), 100); 

但显然,情况确实如此。有些人更喜欢写这样的描述符:

window.setTimeout(func[, delay[, param1[, param2[, ...]]]]); 

没有人会对第一个描述符提出问题:它的意图很清楚。它是文档的一部分,而不是严格的语言。事实上,许多括号并没有真正增加这种描述符的可读性。问题在于在精确性和清晰度之间划清界限。

省略号

另请注意,这些点意味着后面可以包含更多参数。这个省略号也不应被视为字面意思。不要将其与某些语言语法中的省略号相混淆(例如 Javascript spread operator )。这再次表明该文档约定并不是一种非常严格的语言。

多个括号对

回到第一个例子。请注意,所描述的方法有两对括号。这实际上有一个含义,并且表达了一种在只有一对的替代描述符中不可见的可能性:

response.writeHead(statusCode[, statusMessage, headers])

不同之处在于,此替代方案不允许允许此调用:

response.writeHead(statusCode, headers)

如果想要传递 header ,那么他们还必须提供statusMessage:

response.writeHead(statusCode, statusMessage, headers)

但是,原始描述符确实允许这样做。这意味着所描述的方法非常聪明,因为它支持使用 2 个参数进行的调用的两种不同解释:

response.writeHead(statusCode, statusMessage)
response.writeHead(statusCode, headers)

这显然是因为具有 statusMessage 含义的值与具有 header 含义的值是有区别的。在这种特殊情况下,当第二个参数是对象时,nodejs 将其视为 header;当它是原始值(字符串)时,则将其视为 statusMessage

关于javascript - 了解 JavaScript 文档中使用的函数的表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com