2017-07-27 3 views
0

JavascriptのSwitch文を学び、RubyのCase文と同じように動作すると思いました。しかし、それはわずかに異なり、私はSwitchのステートメントが残りの行を印刷し続ける理由を理解していません。下記の比較例を参照してください:Rubyでcase文の上にRubyのCase文とJavascriptのSwitch文

option = 2 
    case option 
    when 1 
     print "You selected option 1." 
    when 2 
     print "You selected option 2." 
    when 3 
     print "You selected option 3." 
    when 4 
     print "You selected option 4." 
    end 

のみ出力します:You selected option 2.

をしかし、それはJavascriptのSwitchステートメントに変換する場合:

var option = 2 
    switch (option) { 
     case 1: 
     console.log("You selected option 1."); 
     case 2: 
     console.log("You selected option 2."); 
     case 3: 
     console.log("You selected option 3."); 
     case 4: 
     console.log("You selected option 4."); 
    } 

上記Switchステートメント

You selected option 2. 
    You selected option 3. 
    You selected option 4. 

私はswitch文に各caseの後にbreakを入れて、それを機能させます。

誰かが理由を説明してください.Javascriptで簡単な方法や方法がありますか?

+1

それぞれのケースの後に 'break'を追加する必要があります。これが言語の設計方法です。 Java、C、PHPに加え、太陽の下でほとんどすべての言語。 –

+0

@JoeFrambach:「太陽の下ではほとんどすべての言語。残りのコメントは完全にオンポイントですが、これは明らかに間違っています。例えば、Lisp、Elixir、Pascal、Modula 2、Perl、Fortranなど多くの人々がRubyと同じアプローチを取っています。 – Amadan

答えて

3

JavaScriptはCの伝承に従い、から抜け出すために明示的にbreakを要求しています。 C++とJavaは、その点で同じであるだけでなく、(私は確信しています)無数の他のCの派生物です。 caseから抜け出すために

switch (something) { 
    case value: 
    console.log("whatever"); 
    break; 
    case other: 
    console.log("other"); 
    break; 
} 

breakがなければ、実行は、後続のcaseブロックに "フォールスルー"。