teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/09/20 12:30

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -14,4 +14,28 @@
14
14
  registerFunction(aaa,"xxx");
15
15
  registerFunction(bbb,"yyy");
16
16
 
17
- ```
17
+ ```
18
+
19
+ # 追記
20
+ リストにあるものだけ実行する
21
+
22
+ ```ここに言語を入力
23
+ function registerFunction(name,response){
24
+ var mylist={"aaa":aaa,"bbb":bbb};
25
+ if(typeof mylist[name]!=="undefined"){
26
+ mylist[name](response);
27
+ }
28
+ }
29
+ function aaa(v){
30
+ console.log("hoge"+v);
31
+ }
32
+ function bbb(v){
33
+ console.log("fuga"+v);
34
+ }
35
+ registerFunction("aaa","xxx");
36
+ registerFunction("bbb","yyy");
37
+ registerFunction("ccc","zzz");//cccはリストにないので実行されない
38
+ ```
39
+ ※こうすれば指定する文字列と実行する関数は必ずしも同じである必要はない
40
+ 逆に必ず文字列名でユーザー関数を実行するなら配列に文字列を羅列し
41
+ 合致した場合だけevalを実行するような保険をかけることはできます。