我可以预先声明变量以破坏对象分配吗?

露西·贝恩

背景

当我尝试用数组解构分配时,我可以预先声明变量:

let a, b, c;
let arr = [1, 2, 3, 4, 5];
[a, b, c] = arr;

console.log(a) // logs 1
console.log(b) // logs 2
console.log(c) // logs 3

通过Babel编译器就可以了。

但是,当我尝试对对象执行相同操作时,出现错误

let a, b, c
let obj = {cat: 'meow', dog: 'woof', mouse: 'squeak'};
{cat: a, dog: b, mouse: c} = obj;

console.log(a) // I want this to log 'meow'
console.log(b) // I want this to log 'woof'
console.log(c) // I want this to log 'squeak'

问题

这是ES6还是Babel的怪癖/问题?如果有意使用ES6,为什么要区别对待数组的方式呢?

笔记

据我所知,更换varlet我不需要预先声明我的变量手段和具有let内联是有效的(而且,我相信,一般者优先)。我想知道实现之间的区别,而不是“根本不那样做”的答案。

四人

当您分解对象时,

  1. 您需要使用与对象中的键相同的变量名。只有这样,您才能获得一对一的对应关系,并且值将正确解构。

  2. 并且如果不使用声明语句,则需要将整个赋值都用括号括起来,否则左侧表达式中的对象文字将被视为一个块,并且会出现语法错误。


所以你的固定代码看起来像这样

'use strict';
let cat, dog, mouse;
let obj = {cat: 'meow', dog: 'woof', mouse: 'squeak'};
({cat, dog, mouse} = obj);     // Note the `()` around

相当于

'use strict';
let obj = {cat: 'meow', dog: 'woof', mouse: 'squeak'};
let {cat, dog, mouse} = obj;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在python中找到哪些参数是“预先分配的”吗?

来自分类Dev

无法将JSON响应分配给预先声明的数组

来自分类Dev

如何从已经预先声明的类继承

来自分类Dev

在没有预先声明的变量限制的情况下动态创建新组件?

来自分类Dev

SQL Server:是否可以将where子句限制为预先声明的列表中的特定值

来自分类Dev

我可以在其他类的main内部使用声明和分配的变量吗?

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

我可以在语句中声明变量吗?

来自分类Dev

我可以在查询中声明变量吗?

来自分类Dev

Java-我们可以在构造函数中声明对象变量吗?

来自分类Dev

我可以为C ++ 11 std :: tuple预先分配一块内存吗?

来自分类Dev

在yaml中预先声明锚定的排除标头?

来自分类Dev

我可以在函数声明中传递变量吗?

来自分类Dev

汇编-我可以在过程中声明变量吗?

来自分类Dev

我可以在Java中更改变量的声明类型吗?

来自分类Dev

我可以声明局部变量不为null吗?

来自分类Dev

我可以在lambda捕获子句中声明变量吗?

来自分类Dev

我可以用方括号声明变量吗?

来自分类Dev

我可以在C ++中全局声明类对象吗?

来自分类Dev

我可以在C ++中全局声明类对象吗?

来自分类Dev

可以在 C++(17) 中捕获某些对象属性的破坏性分配事件吗?

来自分类Dev

这个查询是否比我首先声明一个变量要慢?

来自分类Dev

我可以将函数分配给变量吗?

来自分类Dev

我可以将变量分配器与if结合使用吗?

来自分类Dev

可以分配持久对象吗?

来自分类Dev

可以分配持久对象吗?

来自分类Dev

汇编指令可以破坏我的Ubuntu吗?

来自分类Dev

汇编指令可以破坏我的Ubuntu吗?

来自分类Dev

我可以使用指向其析构函数中被破坏对象的指针吗?

Related 相关文章

  1. 1

    我可以在python中找到哪些参数是“预先分配的”吗?

  2. 2

    无法将JSON响应分配给预先声明的数组

  3. 3

    如何从已经预先声明的类继承

  4. 4

    在没有预先声明的变量限制的情况下动态创建新组件?

  5. 5

    SQL Server:是否可以将where子句限制为预先声明的列表中的特定值

  6. 6

    我可以在其他类的main内部使用声明和分配的变量吗?

  7. 7

    我可以在查询中声明变量吗?

  8. 8

    我可以在语句中声明变量吗?

  9. 9

    我可以在查询中声明变量吗?

  10. 10

    Java-我们可以在构造函数中声明对象变量吗?

  11. 11

    我可以为C ++ 11 std :: tuple预先分配一块内存吗?

  12. 12

    在yaml中预先声明锚定的排除标头?

  13. 13

    我可以在函数声明中传递变量吗?

  14. 14

    汇编-我可以在过程中声明变量吗?

  15. 15

    我可以在Java中更改变量的声明类型吗?

  16. 16

    我可以声明局部变量不为null吗?

  17. 17

    我可以在lambda捕获子句中声明变量吗?

  18. 18

    我可以用方括号声明变量吗?

  19. 19

    我可以在C ++中全局声明类对象吗?

  20. 20

    我可以在C ++中全局声明类对象吗?

  21. 21

    可以在 C++(17) 中捕获某些对象属性的破坏性分配事件吗?

  22. 22

    这个查询是否比我首先声明一个变量要慢?

  23. 23

    我可以将函数分配给变量吗?

  24. 24

    我可以将变量分配器与if结合使用吗?

  25. 25

    可以分配持久对象吗?

  26. 26

    可以分配持久对象吗?

  27. 27

    汇编指令可以破坏我的Ubuntu吗?

  28. 28

    汇编指令可以破坏我的Ubuntu吗?

  29. 29

    我可以使用指向其析构函数中被破坏对象的指针吗?

热门标签

归档