switch的块级作用域

时间:2024-04-05 17:35:56

今天在敲代码的时候,因为有两种货币类型的预制体需要创建,所以用了switch来区分类型,然后case里面创建,结果出现了以下问题:

在case 0里let了个param_a,赋值,之后在case 1里面复制了case1里面的代码,然后就报错了:switch的块级作用域
无法在不同的case里面let同名变量,也就是不同的case其实同一个块级作用域,即switch里是同一个块级作用域。

但是:在case里面不声明,用js的话,直接用变量是可以的,但是在ts里面不可以,因为js会默认将未声明的变量直接给了window对象;

现象:有时候自己这么写了,但是项目在运行的时候并没有发现这个错误,可能是因为引擎将es6或者ts转为了es5;

建议:编写代码的时候注意尽量不要在case里面声明一些可能会通用的变量,不要在一个switch的不同case里面声明同名变量。

如有错误,请多指教。