【发布时间】:2018-02-16 14:15:09
【问题描述】:
使用节点 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 =
【问题讨论】:
-
你肯定需要一个声明符关键字,如@987654326@、
let或var。 -
@Pointy,如果变量先前已定义或未在严格模式下,则不正确。 (解构数组没有这样的问题,我一直在使用)
-
但添加它实际上可以让您结束声明。
-
@paul,确定这不是我要指出的潜在错误。
-
你会想看看Why is {} + {} no longer NaN in Chrome console?,它解释了无分号语句如何获得它们需要变为有效的括号(根据下面的答案)。
标签: javascript node.js ecmascript-6 v8 destructuring