Windows 8 Javascript疯狂-变量未定义
我正在学习msdn网站上的一些Windows8教程。具体地说,我在 我的部分代码(从教程中复制)让我想起了它出错的原因。示例如下: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; },
(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
同一错误同一行。啊!我知道这很愚蠢。看起来我只是在玩那些日子的游戏。谢谢!