2017-04-05 43 views
3

變量room_x_beds是必需的,我不關心默認區域。幫助使用開關變量

我不能將var room_x_beds的值賦給var x?

我不明白爲什麼。

代碼:

var room_1_beds = 2; 
var room_2_beds = 2; 
var room_3_beds = 1; 
var give_num = prompt(); 
var x; 

switch(give_num){ 
    case "1": 
     x = room_1_beds; 
     break; 
    case "2": 
     x = room_2_beds; 
     break; 
    case "3": 
     x = room_3_beds; 
     break; 
    default: 
    break; 
     } 

switch(x){ 
    case "1": 
     console.log ("text"); 
    break; 
    case "2": 
     console.log ("text"); 
    break; 
    default: 
    break; 
} 

回答

3

第二switch聲明的值應該是數字而不是字符串。

var room_1_beds = 2; 
 
var room_2_beds = 2; 
 
var room_3_beds = 1; 
 
var give_num = prompt(); 
 
var x; 
 
switch(give_num){ 
 
    case "1": 
 
     x = room_1_beds; 
 
     break; 
 
    case "2": 
 
     x = room_2_beds; 
 
     break; 
 
    case "3": 
 
     x = room_3_beds; 
 
     break; 
 
    default: 
 
    break; 
 
     } 
 

 
switch(x){ 
 
    case 1: 
 
     console.log ("text"); 
 
    break; 
 
    case 2: 
 
     console.log ("text"); 
 
    break; 
 
    default: 
 
    break; 
 
}

+0

您可以添加嚴格compairing爲好。 –

+0

@NinaScholz我對此進行了一些搜索,發現* switch語句首先評估它的表達式。然後查找第一個表達式的值與輸入表達式的結果相同的第一個case子句(使用嚴格比較,===),並將控制權轉移給該子句,執行相關的語句。*在MDN處,https:/ /developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch。這不是你指的那個。如果是這樣,那麼這是默認行爲。提前致謝。 – Christos

+0

沒錯,那是改變類型的原因。兩部分都用嚴格的比較來檢查,比如'==='。 –