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());
此代码的工作,但有时它生成的输出而不是名称“未定义”随机值之后 - http://jsbin.com/uriwal/edit#source为什么?未定义的关联数组查找
但到底为什么第二回?我想我可能只是调用程序,它会返回,如果它得到正确的值.. – DrStrangeLove 2012-03-03 17:02:57
@DrStrangeLove:也许这简单的例子可以帮助:http://jsfiddle.net/8QTC9/。如果你删除一个'return',那么这个“链”就会被打破。 – pimvdb 2012-03-03 17:04:48