2017-04-05 44 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

没错,那是改变类型的原因。两部分都用严格的比较来检查,比如'==='。 –