function hoge (str) {
var map = {a:'hoge', b:'foo', c:'piyo'};
result = str.replace(/[a-c]/g, function (token) { // クロージャは 変数str, map, result への参照を保持する (window の unload まで保持するのか、関数実行完了まで保持するのか…?)
return map[token];
});
str = map = null; // 今まではメモリを占有し続けるのが勿体ないので null を代入していたけど、ひょっとして必要ない…?
return result;
}
print(hoge('a b c'));
ZnVuY3Rpb24gaG9nZSAoc3RyKSB7CiAgdmFyIG1hcCA9IHthOidob2dlJywgYjonZm9vJywgYzoncGl5byd9OwoKICByZXN1bHQgPSBzdHIucmVwbGFjZSgvW2EtY10vZywgZnVuY3Rpb24gKHRva2VuKSB7IC8vIOOCr+ODreODvOOCuOODo+OBryDlpInmlbBzdHIsIG1hcCwgcmVzdWx0IOOBuOOBruWPgueFp+OCkuS/neaMgeOBmeOCiyAod2luZG93IOOBriB1bmxvYWQg44G+44Gn5L+d5oyB44GZ44KL44Gu44GL44CB6Zai5pWw5a6f6KGM5a6M5LqG44G+44Gn5L+d5oyB44GZ44KL44Gu44GL4oCm77yfKQogICAgcmV0dXJuIG1hcFt0b2tlbl07CiAgfSk7CgogIHN0ciA9IG1hcCA9IG51bGw7IC8vIOS7iuOBvuOBp+OBr+ODoeODouODquOCkuWNoOacieOBl+e2muOBkeOCi+OBruOBjOWLv+S9k+OBquOBhOOBruOBpyBudWxsIOOCkuS7o+WFpeOBl+OBpuOBhOOBn+OBkeOBqeOAgeOBsuOCh+OBo+OBqOOBl+OBpuW/heimgeOBquOBhOKApu+8nwoKICByZXR1cm4gcmVzdWx0Owp9CgpwcmludChob2dlKCdhIGIgYycpKTs=