【发布时间】:2016-01-28 14:58:16
【问题描述】:
考虑文件sample.es6
switch (1) {
case 1:
const foo = 1;
break;
case 2:
const foo = 2;
break;
}
如果我用 Node 运行它,我得到了
$ node --version
v4.2.11
$ node sample.es6
/tmp/sample.es6:6
const foo = 2;
^
SyntaxError: Identifier 'foo' has already been declared
at Object.<anonymous> (/tmp/sample.es6:1:11)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:134:18)
at node.js:961:3
为什么我会收到此错误?节点不应评估 const foo = 2;。
【问题讨论】:
-
你到底想做什么?你想在哪里使用
foo? -
您是否对
const感到困惑,或者为什么当它们位于不同的case部分时会引发错误? -
这是我可以提供的最小示例。我会将
foo传递给函数。为什么当它们位于不同的案例部分时会引发错误。 -
@RaniereSilva:
case部分没有自己的范围,因此其中的多个foo声明将相互冲突。您可以将它们包装成块 ({ … }) 来解决这个问题。
标签: javascript node.js constants ecmascript-6