我在javascript中有一个函数,它应该返回一个由维基百科页面链接到的所有文章的数组,给定标题。
这里是:
function getLinksFrom(title, returnArray, plcontinue) {
var url = 'http://en.wikipedia.org/w/api.php?action=query&prop=links&titles=' + title + '&format=json&pllimit=500&plnamespace=0&callback=?';
if (!returnArray) {
returnArray = [];
}
if (!plcontinue) {
plcontinue = '';
}
if (returnArray.length === 0 || plcontinue !== '') {
if (plcontinue !== '') {
url = 'http://en.wikipedia.org/w/api.php?action=query&prop=links&titles=' + title + '&format=json&pllimit=500&plnamespace=0&plcontinue=' + plcontinue + '&callback=?';
}
$.ajax({url: url,
dataType: 'json',
async: false,
success: function(data) {
for (key in data['query']['pages']) {
links = data['query']['pages'][key]['links'];
}
for (var i = 0; i < links.length; i += 1) {
returnArray.push(links[i]['title']);
}
if (data.hasOwnProperty('query-continue')) {
plcontinue = data['query-continue']['links']['plcontinue'];
} else {
plcontinue = '';
}
console.log(returnArray);
return getLinksFrom(title, returnArray, plcontinue);
}
});
}
console.log(returnArray);
return returnArray;
}
当我运行这个函数并观察控制台时,console.log(returnArray); 行将我想要的内容放在控制台中。字符串数组。但这就是我感到困惑的地方。
我想将该 returnArray 存储在一个名为 links 的变量中。这是函数下方的那条线。
var links = getLinksFrom('United States');
但是链接最终并不等于之前记录的那个美妙的东西。相反,它包含一个对象数组,长度不正确。
这里发生了什么事?