Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1.12 KB

10.9.md

File metadata and controls

43 lines (30 loc) · 1.12 KB

10.9 解构陷阱

在使用解构的时候,要考虑两件事情:

  • 一条语句不能以大括号开始。
  • 在解构过程中,要么声明变量,要么赋值给它们,但是两件事不能一起做。

下面的两节讲述了详细内容。

10.9.1 一条语句不要以大括号开始

因为代码块以大括号开始,因此语句一定不要以大括号开始。这在对象解构赋值的时候会失败:

{ a, b } = someObject; // SyntaxError

变通的方法是把整个表达式放到小括号中:

({ a, b } = someObject); // ok

10.9.2 对于已经存在的变量,不能同时声明和赋值

在一个解构变量声明的过程中,左侧每一个变量都声明了。在下面的例子中,我们尝试声明变量 b ,并且使用已经存在的变量 f ,这种做法将会失败:

let f;
···
let { foo: f, bar: b } = someObject;
    // During parsing (before running the code):
    // SyntaxError: Duplicate declaration, f

修复的方法是事先声明好 b ,然后解构赋值:

let f;
···
let b;
({ foo: f, bar: b }) = someObject;