javascript - const 已经在 ES6 开关 block 中声明

标签 javascript node.js constants ecmascript-6

<分区>

考虑文件 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

为什么会出现此错误? Node 不应评估 const foo = 2;

最佳答案

您可以围绕您的案例创建作用域 block ,编译器会很高兴:

switch (1) {
    case 1: {
        // notice these extra curly braces
        const foo = 1;
        break;
    }
    case 2: {
        const foo = 2;
        break;
    }
}

阅读answer from Igor如果您需要更多上下文。

关于javascript - const 已经在 ES6 开关 block 中声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397782/

相关文章:

c++ - 一个运算符 == 其参数是非常量引用

PHP 命名空间,包括 use 语句中的常量

javascript - Electron: Electron 构建器配置

php - 使用 PHP 或 Javascript 去掉最后一个逗号

javascript - 在表单中实现提交事件

javascript - Mongoose - 查询 exec() 永远不会在模型方法中解析

javascript - 使用node js下载不完整/部分图像

node.js - 如何以编程方式向 Mocha 添加递归选项?

node.js - 如何正确使用带有 npm 脚本的 parallelshell?

java - 不让我初始化一个最终常量 int 吗?