Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在多个开关案例中使用let声明的变量名?_Javascript_Switch Statement - Fatal编程技术网

Javascript 如何在多个开关案例中使用let声明的变量名?

Javascript 如何在多个开关案例中使用let声明的变量名?,javascript,switch-statement,Javascript,Switch Statement,我正在尝试使用switch语句执行任务。在第一种情况下,我使用let声明了一个变量。但当我在第二种情况下尝试访问它时,它会说“uncaughtreferenceerror:t未定义” x=“20”; 开关(x){ 案例“10”: 设t=15; 打破 案例‘20’: 控制台日志(t); }如果在案例“10”中声明变量,并且在案例“20”中尝试访问变量,则会出现该错误,因为您没有在案例“20”的范围内声明变量 如果您在不同的情况下多次声明变量,那么编译器将理解您试图多次声明变量;所以,它给了你这个

我正在尝试使用switch语句执行任务。在第一种情况下,我使用let声明了一个变量。但当我在第二种情况下尝试访问它时,它会说“uncaughtreferenceerror:t未定义”

x=“20”;
开关(x){
案例“10”:
设t=15;
打破
案例‘20’:
控制台日志(t);

}
如果在案例“10”中声明变量,并且在案例“20”中尝试访问变量,则会出现该错误,因为您没有在案例“20”的范围内声明变量


如果您在不同的情况下多次声明变量,那么编译器将理解您试图多次声明变量;所以,它给了你这个错误

这就是它应该是的。在switch语句之前声明它。因此,该变量在开关下方的任何情况下都是可用的

x=“20”;
设t=0;
开关(x){
案例“10”:
t=15;
打破
案例‘20’:
t=150;
控制台日志(t);

}
Declare
let t在switch语句上方。在案例10中初始化t,因此在案例20中它不可用(作用域),因此
case
s不算作单独的块,这很有趣,当您还想使用现代语法(如
let
const
)时,这将使事情难以处理。虽然您可以在
开关
之前声明变量一次,但我建议尽可能完全放弃
开关
(可能使用由
x
s索引的对象,其属性是关联的值)“为什么会发生这种情况?”-在第一种情况下,应该很明显:
t
20
的情况下从未初始化过。这是因为您在同一函数范围内重新声明了
let
语句。这将引发语法错误。上面的文件提到了这个确切的案例。如果希望在每种情况下都有一个新的
let
语句,则使用块语法代替
case:{let a;}
而不是
case:let a。这样,您将创建单独的作用域。但这并不能回答我的问题,这是为什么happening@ImMNA你能解释一下这是如何将
t
置于全球范围内的吗?您是否试图在块范围(
switch
语句)中声明变量?我认为这是正确的答案…@stealthteninja我假设
switch
语句位于顶层,在这种情况下,分配给在顶层声明的
t
将有效地使
t
成为全局的。是的,这会起作用,但如果您想限制每种情况下t的范围,只需将其包装在块中。如case变量:{let t=…}