• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:switchのcase句の中に{}がある)

switchのcase句の中に{}がある

このQ&Aのポイント
  • switchのcase句の中に{}がある意味が分からない。
  • 初心者ですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

そこで使われているのはただ単に見やすくするだけ(複数行がcaseで始まってbreakで終わるのはわかりにくいため)のためです。 もちろんブロックスコープをこさえるために使うことも多々ありますが、その場合は変数宣言をvarではなくletやconstで行わなければなりません。 もしかするとあまりJSに詳しくない人がブロックスコープを作る気で書いたのかもしれませんが、前述の通りvarでは効果を発揮しません。

natyo4235
質問者

お礼

回答ありがとうございます。 letを使っていなくてもコード自体に問題ないので、とりあえず何かわかってよかったです。ありがとうございました。

その他の回答 (1)

回答No.1

{}内で定義した変数は、ローカルスコープを持ち、{}の外の同名の変数に影響を与えません。 なので、{}の中で var i = ~~~ と変数を定義して使っても、{}の外に影響を与えません。 {}で括る目的は「{}の中でローカル変数iを定義して使う際に、{}の外にある変数iに影響を与えたくないため」です。 以下のようになっている場合を考えて見て下さい。 var i = hogehoge;  ←switch文の前で i が定義されている (略) switch (d3.event.keyCode) { case 8: // backspace case 46: { // delete var i = self.points.indexOf(self.selected);  ← {}の中で定義された i (略) } } (略) if (i == hogehoge) {  ←ここの i は、どの i だろう? (略) }

natyo4235
質問者

お礼

回答ありがとうございました。 これはブロックスコープというやつですか?javascriptにはブロックスコープがないと勘違いしてたみたいです。オブジェクト以外に単独で使用するものだと思ってませんでしたorz <if (i == hogehoge) {  ←ここの i は、どの i だろう? グローバルです!

関連するQ&A