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