var candidates = {
"1":"Barack Obama",
"2":"Mitt Romney",
"3":"Dennis Kucinich",
"4":"Quentin Tarantino",
"5":"Count Dracula"
};
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
function getRandomPresident(){
var num = getRandomInt(1, Object.size(candidates));
if (num!=5){
alert(num);
var key = num.toString();
var res = candidates[key];
return res;
} else {
getRandomPresident();
}
}
alert(getRandomPresident());
このコードは機能しますが、ランダムな値を生成した後に、名前の代わりに "undefined"を出力することがあります - http://jsbin.com/uriwal/edit#sourceなぜですか?連想配列参照で未定義
が、なぜ正確に第2の戻り?私はちょうどルーチンを呼び出すことができると思って、それが適切な値を持っていればそれは戻ってくるでしょう。 – DrStrangeLove
@DrStrangeLove:おそらく、この単純化された例は役立ちます:http://jsfiddle.net/8QTC9/。 'return'を1つ取り除くと、" chain "が壊れます。 – pimvdb