質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

1925閲覧

javascriptのswitch文に関して

MasakazuFukami

総合スコア1869

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/06/01 04:37

いつもお世話になっております。
switch文に関して質問なのですが、こちら、文法的に間違っている部分はありますでしょうか?
percentageを入れるとcosnoleを出すだけの処理です。

lang

1var setPercentage = function(percent){ 2 switch(percent){ 3 case percent < 16.66: 4 console.log('16.66以下'); 5 break; 6 7 case percent < 33.32: 8 console.log('33.32以下'); 9 break; 10 11 case percent < 49.48: 12 console.log('49.48以下'); 13 break; 14 15 case percent < 66.64: 16 console.log('66.64以下'); 17 break; 18 19 case percent < 83.3: 20 console.log('83.3以下'); 21 break; 22 23 case percent <= 100: 24 console.log('100以下'); 25 break; 26 27 default: 28 console.log('それ以外'); 29 break; 30 } 31}

これに対して

lang

1setPercentage(14);

このように実行すると

lang

1それ以外

と出力されます。

予想では

lang

116.66以下

と出ると思っていました。。。

小さいミスのような気がしてるのですが探せません。。。
ご教授お願い致します、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

switchはsetされた値とcaseの値を === で比較するので、
14 < 16.66:つまりtrueとの比較をしているということになります。
なのでもしswitch文で実現したいのでしたら、

var setPercentage = function(percent){ switch(true){ case percent < 16.66: console.log('16.66以下'); break;

としてみるといいと思います。

投稿2015/06/01 04:46

mhashi

総合スコア408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

switch(true)
あと以下なので
case percent <= 16.66

投稿2015/06/02 19:36

miso

総合スコア68

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あまり良くない方法かもしれませんが、

lang

1switch(percent)

lang

1switch(true)

にすると動くと思います。
理由は以下の通りです。
caseに書いた式は判定がなされ、trueまたはfalseが入ります。ですので、percentと真偽値を比較していることになるので、defaultまで進んでしまいます。

投稿2015/06/01 04:45

orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

switch文では、カッコの中に書いた「値」と、caseに書かれたものを比較します。

caseに条件式を書く場合、switch(true)とすれば動きますが、この書き方は賛否が割れるものとなっています(Qiitaより)。

うっかりフォールスルーしてしまう危険もありますし、特段理由がなければifを並べたほうがいいのではないかと思います。

投稿2015/06/01 04:44

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問