javascript - Node JS/V8 解构错误?

标签 javascript node.js ecmascript-6 v8 destructuring

使用 Node 8.4.0:

$ node
> {x, y} = {x: 1, y: 2}
{ x: 1, y: 2 }
>

但是,以下错误也是非交互式的:(唯一的区别是分号)

$ node
> {x, y} = {x: 1, y: 2};
...

同样在 Chrome 控制台中:

> {x,y} = {x:1, y:2}
< {x: 1, y: 2}
> {x,y} = {x:1, y:2};
x VM253:1 Uncaught SyntaxError: Unexpected token =

谁能解释一下?

澄清

这与按预期工作的 let、var 或 cosnt 解构无关。这是关于先前定义的变量,(或非严格模式):来自 chrome 控制台:

> let a, b;
< undefined
> [a, b] = [1, 2];
< >(2) [1, 2]
> a
< 1
> b
< 2
> {a, b} = {a:3, b:4}
< >{a: 3, b: 4}
> a
< 3
> b
< 4
> {a, b} = {a:3, b:4};
x VM1297:1 Uncaught SyntaxError: Unexpected token =

最佳答案

将对象解构为现有变量的正确语法是

({x, y} = {x: 1, y: 2});

这允许 {x, y} = {x: 1, y: 2} 成为一个表达式。否则 {x, y} 被解释为带有逗号运算符的 block ,这会导致 Unexpected token = 错误。

它在控制台中没有括号和分号就可以工作,因为它在那里被视为表达式。这实际上与

console.log({x, y} = {x: 1, y: 2});

关于javascript - Node JS/V8 解构错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103157/

相关文章:

c# - 非mshtml c#解析html和javascript

javascript - 动画持续时间在 Safari 中表现不正常

javascript - Node.js 和 Instagram API, 'Could not decode a text frame as UTF-8'

node.js - 亚格斯记录一面旗帜

javascript - 嵌套订阅并需要所有值作为正文传递给 API - Angular 6 RxJS

Javascript - GroupBy 键以及如何为生成的对象建模

Javascript 仅适用于 Firebug

带有数组或字符串的 Javascript 开关盒

javascript - JS ES6 : Get parameters as an object with destructuring

javascript - 为什么应该使用 block 作用域而不是函数作用域?