当前位置: 首页 > 面试题库 >

ES6阵列破坏性怪异

卢涵畅
2023-03-14
问题内容

谁能解释,为什么ES6阵列解构会发生以下情况?

let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)

// expected: a=A b=BB c=C
// actual:   a=BB b=C c=undefined

问题答案:

正如其他人所说,您缺少分号。但…

谁能解释?

let a = undefined, b = undefind, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);

其中

  • [a, b] = …; 是预期的解构任务
  • (… = ['BB', 'C']) 是一个赋值表达式,将数组分配到左侧,并对数组求值
  • ['A', 'B'][…]是对数组文字的属性引用
  • (b, c)正在使用逗号运算符,计算结果为c(是undefined

如果你想省略分号,让那里的人永远自动插入 可能 需要的话,你将需要把一个在开始每一行的是开头([/+-或```。



 类似资料:
  • 我在分布式环境(“微服务”)中使用Protobuf 3和gRPC。 由于缺乏支持的未设置/缺失的值在原型3我得到了以下问题有关的合同可加性。 假设我有服务A和两个由团队B和团队C拥有的消费者服务B和C。 如果我将一个字段(比如布尔值)添加到服务a的契约中,首先它将具有默认值,该值将按原样写入数据库。 然后,B队使用更新后的合约更新服务进行对话,并将“true”作为字段值传递。然后,C队仍然使用旧合

  • 非破坏性编辑技术 非破坏性编辑允许您对图像进行更改,而不会覆盖原始图像数据,原始图像数据将保持可用状态以备您需要恢复到原始图像数据。由于非破坏性编辑不会移去图像中的数据,因此,当您进行编辑时,不会降低图像品质。可以通过以下几种方式在 Photoshop 中执行非破坏性编辑: 处理调整图层 调整图层可将颜色和色调调整应用于图像,而不会永久性更改像素值。 使用智能对象进行变换 智能对象支持非破坏性缩放

  • 问题内容: 我知道Go中没有析构函数,因为从技术上讲没有类。这样,我用来执行与构造函数相同的功能。但是,有没有办法在终止的情况下创建某些东西来模仿析构函数,例如使用关闭文件?现在,我只是打电话给我,但这有点荒唐,我认为设计很差。正确的方法是什么? 问题答案: 在Go生态系统中,存在一种处理包装了宝贵(和/或外部)资源的对象的惯用语:一种专门用于释放该资源的特殊方法,通常通过该机制进行 显式 调用。

  • 问题内容: 我有一个用Restify和Mongoose在node.js中构建的REST服务,以及一个mongoDB,它的集合包含大约30.000个常规大小的文档。我的节点服务通过pmx和pm2运行。 昨天,节点突然开始通过消息“ MongoError:拓扑已被破坏”消除错误,仅此而已。我不知道这是什么意思,可能触发了什么。谷歌搜索时也没有太多发现。所以我想在这里问。 今天重新启动了节点服务后,错误

  • 我想为我的移动应用程序添加背景,但当我使用“this.props.children”时,eslint说我“必须使用解构道具分配”。为什么我可以分解这些道具? 这是我的密码, 当我使用这个代码时 当我使用这个代码时, 提前感谢您的帮助!

  • 在实际应用中,destroy方法的可能示例是什么?为什么一个正在运行的应用程序想要销毁它的bean?如果bean是由spring容器(比如ContextLoaderListener)为web应用程序创建的,那么如何重新创建这些bean,因为容器已经启动了。有没有办法在不重启应用服务器的情况下重启spring IoC容器?