簡體   English   中英

在es6中的case語句后,花括號在switch語句中做了什么?

[英]What do the curly braces do in switch statement after case in es6?

有什么區別:

switch (expression) {
    case:
      somethings;
      break;
}

switch (expression) {
    case: {
      somethings;
      break;
    }
}

起初我以為我可以像這樣返回一個對象文字,但事實證明這是一個語法錯誤。 實際上有什么區別?

另一個問題的例子: 如何在Javascript ES6中將switch語句作為函數參數傳遞?

以這種方式使用的大括號建立自己的塊作用域,您可以在其中定義局部let變量或const常量:

 switch (false) { case true: { let x = "bar"; console.log(x); break; } case false: { let x = "baz"; console.log(x); break; } } 

該示例將拋出沒有嵌套塊作用域,因為在Ecmascript 2015中,不允許在同一作用域內使用具有相同標識符的多個let / const聲明。

請注意, switch語句本身會創建一個塊作用域,即是否使用嵌套塊作用域, let switch / const聲明不會泄漏到父作用域中。

但是,在switch的上下文中,花括號也使用純裝飾,以在視覺上突出顯示各個case分支的塊。

你必須使用花括號:

  1. 在創建具有相同名稱的 更多塊范圍變量( const / let )時
    • 根據規范MDN網絡文檔
    • 錯誤:未捕獲的SyntaxError:已聲明標識符'variablename'
  2. 在默認設置中使用eslint並使用偶數單個const / let )時
    • 根據規則無案例聲明
    • 錯誤:case case no-case-declarations中出現意外的詞法聲明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM