javascript - Javascript 为什么带有花括号的 const 声明有时在花括号内有 = 符号?
问题描述
我正在研究一个项目,我看到了这种模式:
handleValueChange = (e) => {
const { target: { id, value } = {} } = e || {};
# some code ....
我从来没有=
在{}
之后看到过const
,而且我在网上找不到任何文档。
这种语法叫什么?它是如何工作的?
解决方案
如解构分配文档中所述:
如果从对象中解包出来的值为 ,则可以为变量分配默认值
undefined
。
例如:
const {a = 10, b = 5} = {a: 3};
console.log(a); // 3
console.log(b); // 5
在这里您可以看到b
,undefined
因此在解构时5
使用了默认值b
。
在您的情况下,如果target
is undefined
while destructuring e
,则将使用空对象{}
。
这在e
isundefined
或的情况下是必需的null
,否则我们将收到如下错误:
无法读取未定义的属性“id”
const { target: { id, value } } = {};
console.log( id, value )
使用默认值处理这种情况:
const { target: { id, value } = {} } = {};
console.log( id, value )
推荐阅读
- gis - 启动会话编辑时无法编辑要素图层
- scala - 如何使用 Scala 在 lagom 中为 NoHostAvailableException 编写测试用例?
- react-native - 想要真实的图像是可点击的,但不应该点击 alpha 背景。请建议我该怎么做
- amazon-cognito - 将 AWS Cognito/Amplify 用作 OIDC 服务
- angular - 单击特定行时嵌套的 Mat-table
- amazon-dynamodb - 当我们将更多数据放入表中时,DynamodB 查询开始花费更多时间
- c# - 使用 Resharper SDK 查找 ITypeElement 或 IDeclaredElement 的用法
- forms - Flutter - 在点击 TextFormField 时显示对话框 NumberPicker
- android-gradle-plugin - 如何在gradle中修复“程序类型已经存在”
- django - 如何将多个参数从views.py传递给表单并在forms.py中获取它们并添加到django 2.1.7中的HiddenInput字段?