次のように宣言された「列挙型」があります。
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);
次のアラートが表示されます:「true に切り替える前」、「デフォルトのケース」
このように呼び出すと:
setPlaceType(2);
次のアラートが表示されます:「スイッチ false の前」、「ケースのデフォルト」
言い換えれば、関数は適切な引数で呼び出されます。これは、スイッチと同じ比較を行うと (私にはそう思われます)、「==」を介して正しい動作が得られますが、スイッチは値と一致しません。適切なケースに。理由を知っている人はいますか?