Windows 8 Javascript疯狂-变量未定义

Windows 8 Javascript疯狂-变量未定义,javascript,windows-8,Javascript,Windows 8,我正在学习msdn网站上的一些Windows8教程。具体地说,我在 我的部分代码(从教程中复制)让我想起了它出错的原因。示例如下: (function () { "use strict"; var list = getBlogPosts(); var groupedItems = list.createGrouped( function groupKeySelector(item) { return item.group.key; },

我正在学习msdn网站上的一些Windows8教程。具体地说,我在

我的部分代码(从教程中复制)让我想起了它出错的原因。示例如下:

(function () {
    "use strict";

    var list = getBlogPosts();
    var groupedItems = list.createGrouped(
        function groupKeySelector(item) { return item.group.key; },
        function groupDataSelector(item) { return item.group; }
    );
    var dataPromises = [];
    var blogs;
    var blogPosts = new WinJS.Binding.List();

    function getFeeds() {
        blogs = [
            {
                key: "blog1",
                url: 'http://windowsteamblog.com/windows/b/developers/atom.aspx',
                title: 'tbd', updated: 'tbd',
                acquireSyndication: acquireSyndication, dataPromise: null
            },
            // lots more entries ...
        ];

        blogs.forEach(function (feed) {
            feed.dataPromise = feed.acquireSyndication(feed.url);
            dataPromises.push(feed.dataPromise);
        });

        return WinJS.Promise.join(dataPromises).then(function () { return blogs });
    }

// more code...

})();
dataPromises.push(feed.dataPromise);
行中,我得到了错误
JavaScript运行时错误:无法获取未定义或空引用的属性“push”
。您可以看到
dataPromises
被定义并初始化为文件顶部附近的空数组(我还尝试使用
new array()初始化它);

我做错了什么???我猜我把一些愚蠢的事情搞砸了…顺便说一句,上面代码片段中出现的3个位置
dataPromises
是项目中唯一出现的位置


我的第一个想法是提升,但除非发生了什么神奇的事情,否则我不会在任何可能覆盖顶级函数作用域的局部作用域中明确声明
dataPromises

您没有正确地遵循教程。行

var list = getBlogPosts();
替换
新的WinJS.Binding.List()
调用,该调用发生在初始化
dataPromises
的行之后

问题是
getBlogPosts()
正在调用
getFeeds()
,而
getFeeds
试图将结果推送到
datapromissions
上,但行
var-datapromissions=[]
尚未执行,因此
datapromissions
仍然
未定义

初始化
dataPromises
变量后,将对
getBlogPosts()的调用移动到


逐行检查调试器中的代码本应以相当简单的方式暴露此问题。

@nalply他正在使用Internet Explorer 10。在哪里定义了
acquireSyndication
?您是否尝试更改变量的名称?可能
dataPromises
正在其他地方被覆盖?@epascarello i这是文件中的下一个函数。@jbabey刚刚尝试将其更改为
blogDataPromises
同一错误同一行。啊!我知道这很愚蠢。看起来我只是在玩那些日子的游戏。谢谢!