Tod*_*ses 10 javascript asp.net-mvc scope
在使用ASP.NET MVC创建JavaScript时,我注意到了几个范围警告,并意识到我在理解switch/case语句中的变量范围时遗漏了一些东西.
警告:'i'已经定义,参考案例b和案例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;
}
Run Code Online (Sandbox Code Playgroud)
我认为范围以每个break语句结束,但似乎范围不会在switch/case结束之前结束.是整个开关/机箱的范围?
SLa*_*aks 15
Javascript不使用块范围.
因此,所有局部变量都在声明它们的整个函数的范围内.
但是,在您的特定情况下,没有类似C语言(我知道),其中每个case
语句形成一个独立的范围.
例如,以下C#代码将无法编译:
switch(someVar) {
case 1:
int a;
break;
case 2:
int a; //'a' is already defined
break;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4690 次 |
最近记录: |