Windows 8 Javascript 疯狂 - 变量未定义
Windows 8 Javascript insanity - variable undefined
我正在从msdn网站上学习一些Windows 8教程。具体来说,我在这个问题上。
我的部分代码(从教程中复制)让我大吃一惊,为什么它会出错。示例如下:
(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 runtime error: Unable to get property 'push' of undefined or null reference
.您可以看到dataPromises
被定义并初始化为文件顶部附近的空数组(我也尝试使用 new Array();
初始化它)。
我在这里做错了什么???我猜我搞砸了一些愚蠢的事情... 顺便说一下,dataPromises
上面代码段中出现的唯一位置是它在项目中任何地方出现的唯一位置。
的第一个想法是提升,但除非发生神奇的事情,否则我不会在任何可能覆盖顶级函数范围的本地作用域中明确声明dataPromises
。
您没有正确遵循本教程。该行
var list = getBlogPosts();
替换new WinJS.Binding.List()
调用,该调用发生在初始化 dataPromises
的行之后。
问题是getBlogPosts()
正在调用getFeeds()
,而getFeeds
正在尝试将结果推送到dataPromises
但行var dataPromises = []
尚未执行,因此dataPromises
仍然undefined
。
在初始化 dataPromises
变量后,将调用移动到 getBlogPosts()
到。
逐行单步执行调试器中的代码应该以相当直接的方式暴露此问题。
相关文章:
- Javascript变量未定义,onchange不起作用
- 定义的变量未定义
- 无法弄清楚为什么本机 Promise 变量未定义
- Windows 8 Javascript 疯狂 - 变量未定义
- $rootScope变量未定义
- 变量未定义
- Javascript:TypeError变量未定义
- 变量未定义/超出范围
- javascript变量未定义
- Javascript变量未定义错误
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 类型错误:变量未定义
- AngularJs $http变量未定义
- JQuery:创建扩展返回变量未定义
- d3.js变量未定义,但在Firefox控制台中,它可以工作
- Javascript 中用于上传表单数据的变量未定义
- 节点.js模块级变量未定义
- Node.js req.session 变量未定义
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 将字符串拆分为两个变量 - 未定义不是一个函数