首页 > 解决方案 > 这个 Javascript 语法是否正确 { req, socket, res = socket, head, proxyName }?

问题描述

这可以在流行的 npm存储库http2-proxy中找到。代码运行如下:

async function proxy (
  { req, socket, res = socket, head, proxyName },
  onReq,
  onRes
) {...}

带有赋值运算符的对象被传递给函数。我只是想知道这种语法是否正确,因为对象应该使用冒号(:) 作为赋值运算符。我在控制台中测试了这个语法,果然给出了一个语法错误,但是由于它是在一个流行的 repo 中找到的,我认为这是正确的,但是怎么会呢?

标签: javascriptnode.js

解决方案


是的,这是正确的语法。

您所看到的称为参数解构,它与分配对象的语法不同。代码片段是以下内容的简写:

async function proxy (
  proxyRes,
  onReq,
  onRes
) {
  // Destructure the proxyRes object into individual variables
  const { req, socket, res = socket, head, proxyName } = proxyRes;
}

对象/参数解构是在 ES6 中引入的。与以往一样,MDN 拥有关于该主题的优秀文档


推荐阅读