为什么const在switch case语句中是非法的?

时间:2015-06-16 03:29:39

标签: javascript google-chrome

为什么在交换机内的case块中不允许使用const?

这会产生JS错误:

(function () {
    "use strict";
    const foo = "bar";
    switch (foo) {
        case "bar":
            const bar = "foo"; // error
            console.log("bar is", bar);
            break;
        default:
            console.log("nope");
            break;
    }
}());

但这有效:

(function () {
    "use strict";
    const foo = "bar";
    switch (foo) {
        case "bar":
            var bar = "foo"; // error
            console.log("bar is", bar);
            break;
        default:
            console.log("nope");
            break;
    }
}());

我一直在阅读ECMASCript规范,并没有向我跳出为什么不允许这样做。 const允许LexicalEnvironment。一个案例块是一种特殊的JavaScript块吗?或者这是一个错误吗?

修改

这是Chrome 42中的一个错误。更新到Chrome 43修复了它。

1 个答案:

答案 0 :(得分:-4)

常量的值不能通过重新赋值来改变,并且不能重新声明常量。

您可以在MDN上看到有关const的更多详细信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const