我有一个这样声明的“枚举”:
var PlaceType = {
PASSABLE_TERRAIN: 1,
IMPASSABLE_TERRAIN: 0,
SOMEWHAT_PASSABLE_TERRAIN: 2,
PATH: 3
};
和这样声明的函数:
setPlaceType(placeType) {
this.clear = false;
this.placeType = placeType;
alert("before switch "+(PlaceType.SOMEWHAT_PASSABLE_TERRAIN==this.placeType));
switch(this.placeType) {
case PlaceType.PASSABLE_TERRAIN: {
alert("Case PASSABLE");
break;
}
case PlaceType.IMPASSABLE_TERRAIN: {
alert("Case IMPASSABLE");
break;
}
case PlaceType.SOMEWHAT_PASSABLE_TERRAIN: {
alert("Case SOMEWHAT_PASSABLE");
break;
}
case PlaceType.PATH: {
alert("Case PATH");
break;
}
default: {
alert("case default");
}
}
}
如果我这样称呼它:
setPlaceType(1);
我收到以下警报:“在 switch true 之前”,“case default”
如果我这样称呼它:
setPlaceType(2);
我收到以下警报:“在 switch false 之前”、“case default”
换句话说,该函数是用正确的参数调用的,当做(在我看来)与开关相同的比较但通过“==”时,我得到了正确的行为,但开关从不匹配值到适当的情况。有人知道为什么吗?