在使用ASP.NET MVC创建JavaScript时,我注意到出现了几个作用域警告,并意识到我缺乏理解switch / case语句内变量作用域的知识。
警告:'i'已经定义 与case b和case c有关
我的代码类似于这样:
switch(element) {
case 'a':
for(var i=0; i < count; i++){
do something
}
break;
case 'b':
for(var i=0; i < count; i++){
do something
}
break;
case 'c':
for(var i=0; i < count; i++){
do something
}
break;
}
我原以为在每个break语句处作用域都会结束,但似乎作用域直到switch/case结束才会结束。那么作用域是否是整个switch/case都适用呢?
我原以为每个break语句会结束作用域,但似乎作用域要一直持续到switch/case语句的结尾。那么作用域是在整个switch/case语句中生效的吗?
case 1: { ... }
。 - hugomgcase
默认情况下仍不会创建自己的作用域。例如,在不同的连续case
中使用let
关键字将引发错误。 - Guy