2017-07-27 60 views
0

我剛剛學會了Javascript的Switch語句,並認爲它的工作方式與Ruby的Case語句相同。然而它略有不同,我不明白爲什麼Switch語句將繼續打印出其餘的行。請參考下面的比較例如: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 

以上的Ruby case語句將只打印出來: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. 

我會有t o在Switch語句中的每個案例之後放置一個break以使其工作。

有人可以請解釋爲什麼,有沒有一種更簡單的方法或方法在Javascript中做到這一點?

+1

您將不得不在每種情況下添加一個「break」。這就是語言的設計。隨着Java,C,PHP和幾乎所有的陽光下的語言。 –

+0

@JoeFrambach:「幾乎所有的陽光下的語言。」雖然評論的其餘部分完全是指向性的,但這顯然是錯誤的。它只是語言的家族,其語法深受C的啓發。例如,Lisp,Elixir,Pascal,Modula 2,Perl,Fortran和許多其他人採用了Ruby所做的相同方法。 – Amadan

回答

3

JavaScript遵循C傳統要求明確break突破switch。 C++和Java在這方面是相同的,以及(我敢肯定)無數其他C衍生物。

爲了擺脫一個case的:

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

沒有break,執行 「漏網」 隨後case塊。