- ベストアンサー
switchのcase句の中に{}がある
- switchのcase句の中に{}がある意味が分からない。
- 初心者ですが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そこで使われているのはただ単に見やすくするだけ(複数行がcaseで始まってbreakで終わるのはわかりにくいため)のためです。 もちろんブロックスコープをこさえるために使うことも多々ありますが、その場合は変数宣言をvarではなくletやconstで行わなければなりません。 もしかするとあまりJSに詳しくない人がブロックスコープを作る気で書いたのかもしれませんが、前述の通りvarでは効果を発揮しません。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19840)
{}内で定義した変数は、ローカルスコープを持ち、{}の外の同名の変数に影響を与えません。 なので、{}の中で 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 だろう? (略) }
お礼
回答ありがとうございました。 これはブロックスコープというやつですか?javascriptにはブロックスコープがないと勘違いしてたみたいです。オブジェクト以外に単独で使用するものだと思ってませんでしたorz <if (i == hogehoge) { ←ここの i は、どの i だろう? グローバルです!
お礼
回答ありがとうございます。 letを使っていなくてもコード自体に問題ないので、とりあえず何かわかってよかったです。ありがとうございました。