http://jsfiddle.net/JonnyD/H2Dpe/3/爲什麼JavaScript將源代碼文本傳遞給參數?
控制檯日誌:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
(index):104
function (newFeedItems) {
console.log(feedItems);
} (index):113
Uncaught TypeError: Object function (newFeedItems) {
console.log(feedItems);
} has no method 'sort'
它在哪裏,從得到這個?
function (newFeedItems) {
console.log(feedItems);
} (index):113
時,它應該是:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
在功能fetchFeeds()
和processLatestFeed()
看一看。這個問題在processLatestFeed(function(newFeedItems) {
function fetchFeeds() {
fetchVideos(function(newVideoItems) {
fetchPodcasts(function(newPodcastItems) {
var newFeedItems = newVideoItems.concat(newPodcastItems);
console.log(newFeedItems);
processLatestFeed(function(newFeedItems) {
console.log(feedItems);
});
});
});
}
function processLatestFeed(newFeedItems, callback) {
console.log(newFeedItems);
newFeedItems.sort(function(a,b) {return (a.date > b.date) ? -1 : ((b.date > a.date) ? 1 : 0);});
for (i in newFeedItems) {
var newItem = newFeedItems[i];
if (!isItemInFeed(newItem)) {
feedItems.push(newItem);
}
if (feedItems.length == 50) {
break;
}
}
callback();
}
你可以進一步描述你的問題嗎?我不認爲我正確理解你想說什麼 –
@ZachSaucier看到newFeedItems以及它如何記錄到控制檯,你可以看到它是如何正確顯示它是一個對象數組[Object,Object,Object .. ..]然而,當newFeedItems被傳遞到processLatestFeed(function(newFeedItems)...它似乎不是以對象數組的形式傳入,而是作爲源代碼本身傳遞的(請參閱控制檯日誌的第二部分) – Jonathan
不確定如果我明白了,但改變了這一點: processLatestFeed(newFeedItems,function(){ console.log(feedItems); }); – juvian