switchを使う方法
var color = "red"; switch(color){ case "red": console.log("RED"); break; case "blue": console.log("BLUE"); break; case "yellow": console.log("YELLOW"); break; defalut: console.log("different color"); break; }
この場合、「RED」が表示される。
連想配列でswitchを実現する
連想配列の使い方
var map = { one: "tokyo", second: "kanagawa", third: "osaka" }; console.log(map["one"]);//tokyo console.log(map['one']);//tokyo //Uncaught ReferenceError: one is not defined console.log(map[one]);
キーは文字列であることに注意。
値を関数にする
var color = { red: function(){ console.log("RED"); }, blue: function(){ console.log("BLUE"); }, yellow: function(){ console.log("YELLOW"); }, _default: function(){ console.log("different color"); } }; var foo = "red"; color[foo]();//RED
今度は値をキーにすれば、switchっぽいものができる。
・参考
idiomatic.js/translations/ja_JP at master · rwaldron/idiomatic.js · GitHub
var hoge = "green"; //Uncaught TypeError: Object #<Object> has no method 'green' color[hoge]();
しかしこのままではdefaultが実装されていない。
//different color (Object.hasOwnProperty.call(color,hoge) && color[hoge] || color._default)();
callを使うことによって、Objectが持つhasOwnPropertyのthisをcolorにして引数hogeを渡している。それで_defalut以外をチェック。
残ったものは_defaultになる。
・callの使い方