tôi dường như bằng cách nào đó có làm mất giá trị của một khung cảnh im biến ...Javascript - Biến mất giá trị của nó và "trở thành" không xác định
im cố gắng để làm gì không phải là quá quan trọng, vì vậy tôi đã thiết lập a (Cũng đã nhận xét) jsFiddle để cho bạn thấy những gì im nhận được. Ngoài ra mã dưới đây.
Nếu bất cứ ai có thể xem những gì xảy ra bất kỳ sự giúp đỡ được đánh giá cao :)
Xem jsFiddle>http://jsfiddle.net/qNWuV/4/ < Đề nghị bạn hãy xem đây
var habs = ["417,77", "410,363", "388,433", "262,435", "262,210", "391,101", "384,183", "61,114", "331,171", "164,433", "361,248", "302,329", "154,307", "410,350", "173,298", "308,429"]; //just an array of co-ords for another part of my app. Only the .length is used below.
//############################
// NOTE: as this problem depends on random numbers you MAY not see it. If "undefined" is ANYWHERE in the Result, the problem is occurring, otherwise re-run the code.
//############################
function link_habs(habs) {
var test2 = '';
var hab_length = habs.length;
for (var e in habs) {
var hab_link_1 = get_link(hab_length, e + ',');
var hab_link_2 = get_link(hab_length, e + ',' + hab_link_1);
document.write('<br /><br />each1: ' + hab_link_1); //Variable lost?
document.write('<br />each2: ' + hab_link_2 + '<br />'); //Variable lost?
test2 += e + ':' + hab_link_1 + ',' + hab_link_2 + '<br />';
}
document.write('<br /><br /><br />' + test2);
}
function get_link(count, not) {
var nots = not.split(',');
for (var i in nots) { nots[i] = parseInt(nots[i], 10); }
var hab_link = Math.floor(Math.random() * count);
if (nots.indexOf(hab_link) === -1) {
document.write('<br />returned: ' + hab_link); //Variable is intact HERE
return hab_link;
} else {
get_link(count, not);
}
}
link_habs(habs);
Cheers
Charlie
Bạn có thể loại bỏ đệ quy trong 'get_link'. Thả mệnh đề else từ câu lệnh if và bọc phần thân của phương thức bằng 'while (1) {...}'. –
thực tế là bạn đã chấp nhận câu trả lời khiến câu hỏi này được giải quyết. không cần phải thêm nó vào tiêu đề. –
Tôi không thực sự thấy lý do tại sao nó quan trọng, nhưng ok, tôi sẽ không làm điều đó một lần nữa ... –