1. 程式人生 > 實用技巧 >switch的塊級作用域

switch的塊級作用域

今天在敲程式碼的時候,因為有兩種貨幣型別的預製體需要建立,所以用了switch來區分型別,然後case裡面建立,結果出現了以下問題:

在case 0裡let了個param_a,賦值,之後在case 1裡面複製了case1裡面的程式碼,然後就報錯了:在這裡插入圖片描述
無法在不同的case裡面let同名變數,也就是不同的case其實同一個塊級作用域,即switch裡是同一個塊級作用域。

但是:在case裡面不宣告,用js的話,直接用變數是可以的,但是在ts裡面不可以,因為js會預設將未宣告的變數直接給了window物件;

現象:有時候自己這麼寫了,但是專案在執行的時候並沒有發現這個錯誤,可能是因為引擎將es6或者ts轉為了es5;

建議:編寫程式碼的時候注意儘量不要在case裡面宣告一些可能會通用的變數,不要在一個switch的不同case裡面宣告同名變數。

如有錯誤,請多指教。