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

switch case的作用域

在switch case中定義變數報錯,例如:

let num = 1

switch(num){

  case 1:

    let a = 1

    break

  default:

    console.log(a) //1

}

再例如

switch(num){

  case 1:

    let a = 1

    break

  case 2:

    let a = 2    

    break

  default:

    console.log(a) //報錯 提示has already been declared

}

看出每個case不會構成單獨的作用域,整個的switch是一個作用域。

let num = 1

switch(num){

  case 1:

    a = 1

    break

  default:

    console.log(a) //1 全域性變數綁在window上,所以可以列印

}

但是:

let num = 2

switch(num){

  case 1:

    let a = 1

    break

  case 2:

    a = 2

    break

}

這種情況會報a未定義,因為case1並未執行,如果num改為1 ,則不會報錯。

問題無法解決,換成了if-else