ES6的参数名称?

Jes*_*ose 22 javascript keyword-argument ecmascript-6

我已经定义了一个函数:

function call_api(url, callback, query = {}, body = {})
Run Code Online (Sandbox Code Playgroud)

我期望一种语法,我可以提供正文和跳过查询:

call_api('/api/clients/new', function(x){console.log(x)}, body={1:2})
Run Code Online (Sandbox Code Playgroud)

但我必须使用此解决方法:

call_api('/api/clients/new', function(x){console.log(x)}, {}, {1:2})
Run Code Online (Sandbox Code Playgroud)

即使我提供body=,它似乎出现作为query参数.我使用Babel和Webpack.我在Chrome控制台和Webpack源代码中尝试了语法.

ES6是否支持这样的语法?它是如何工作的?

Ben*_*aum 25

我建议您通过传递对象并对对象使用解构来解决此问题:

function callApi({url, callback, query = {}, body = {}})
Run Code Online (Sandbox Code Playgroud)

然后将其称为:

callAPI({url: "/api/..", callback: (x => console.log(x)), body: {a:2}})
Run Code Online (Sandbox Code Playgroud)

哪个会给你类似你想要的语法.

对于JavaScript,已经考虑并拒绝了命名参数,这与其他语言(如C#和Python)不同.以下是语言邮件列表中有关它的最新讨论.