为什么在交换机内的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修复了它。
答案 0 :(得分:-4)
常量的值不能通过重新赋值来改变,并且不能重新声明常量。
您可以在MDN上看到有关const的更多详细信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const