我很高兴JavaScript有新的let statement来声明一个块范围局部变量。但是,在switch语句中声明let
变量时似乎存在类型错误,这对于使用let
非常有用。
function test(x) {
'use strict';
switch (x) {
case 0:
let foo;
break;
case 1:
let foo; // TypeError for redeclaration.
break;
}
}
果然,MDN显示了这个例子:
您可能会在switch语句中遇到错误,因为只有一个底层块。
那么为什么switch语句只有一个底层块?
答案 0 :(得分:3)
基本上归结为交换机如何工作,并且在语法中表达它只有一对{}
由于错过了break
,你可以从一个案件落到另一个案件中 - 在这种情况下,你希望拥有相同的范围。
您可以在案件周围添加额外的{}
:
switch(a) {
case 1:{
let a = 1;
}
}
大多数具有块范围的c-ish语言都是这种情况。