首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数参数列表中的花括号在es6中有什么作用?

函数参数列表中的花括号在es6中有什么作用?
EN

Stack Overflow用户
提问于 2016-06-06 23:24:20
回答 3查看 26.7K关注 0票数 155

在我正在处理的代码库中,我不断看到如下所示的函数:

代码语言:javascript
复制
const func = ({ param1, param2 }) => {
  //do stuff
}

这到底是在做什么?我很难在谷歌上找到它,因为我甚至不确定这叫什么,或者如何在谷歌搜索中描述它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-06 23:29:28

它是destructuring,但包含在参数中。没有解构的等价物将是:

代码语言:javascript
复制
const func = o => {
    var param1 = o.param1;
    var param2 = o.param2;
    //do stuff
}
票数 153
EN

Stack Overflow用户

发布于 2016-06-06 23:30:49

这是将对象作为属性进行传递。

它基本上是以下的简写

代码语言:javascript
复制
let param1 = someObject.param1
let param2 = someObject.param2

不带参数使用此技术的另一种方法如下所示,让我们花点时间考虑一下someObject确实包含这些属性。

代码语言:javascript
复制
let {param1, param2} = someObject;
票数 18
EN

Stack Overflow用户

发布于 2019-10-31 19:33:52

这是一个对象解构赋值。和我一样,您可能会感到惊讶,因为ES6对象解构语法看起来很像,但它的行为与对象文字构造不同。

它支持您遇到的非常简洁的形式,以及重命名字段和默认参数:

本质上,它是{oldkeyname:newkeyname=defaultvalue,...}。':‘不是键/值分隔符;'=’是。

这种语言设计决策的一些后果是,您可能必须执行以下操作

;({a,b}=some_object);

额外的括号防止将左大括号解析为一个块,前导分号防止将该括号解析为对上一行函数的函数调用。

有关更多信息,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

注意,在对象解构赋值过程中不会抛出键错误;你只会得到“未定义”的值,无论是键错误还是其他一些被悄悄传播为“未定义”的错误。

代码语言:javascript
复制
> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
> 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37661166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档