Javascript ReferenceError:Strict模式禁止在承诺上的for循环中隐式创建全局属性

Javascript ReferenceError:Strict模式禁止在承诺上的for循环中隐式创建全局属性,javascript,q,Javascript,Q,我有一个非常奇怪的问题。我试图对承诺返回值执行for循环。当我从jasmine测试运行代码时,它会中断。当我从浏览器运行它时,它会断开。代码是 courseService.getCourseDates(8).then(function (data) { console.log(data[0]); --this works console.log(data[1]); --this works for (s in dat

我有一个非常奇怪的问题。我试图对承诺返回值执行for循环。当我从jasmine测试运行代码时,它会中断。当我从浏览器运行它时,它会断开。代码是

courseService.getCourseDates(8).then(function (data) {

            console.log(data[0]);  --this works
            console.log(data[1]);  --this works

            for (s in data) {
                console.log(data[s]);
            }
}
预期输出:

'2014-06-14T00:00:00'
'2014-06-14T00:00:00'
'2014-06-14T00:00:00'
'2014-06-14T00:00:00'
来自Karma/Jasmine的实际输出:

引用错误:严格模式禁止隐式创建全局 财产的

浏览器的实际输出:

ReferenceError: s is not defined
有人知道怎么回事吗?我过去曾使用过类似的循环,很明显,阵列正在填充中……请尝试以下方法:

for (var s in data) {
    ...
}

关于
s不清楚的地方没有定义
?井s应该包含日期,不是吗?变量没有定义,不是它的值。它没有
var
声明。哦,这很有趣,我以前在其他代码中使用过它,但没有使用var s:-/I将接受答案:-)我怀疑当你使用它时,没有使用
var
声明变量,你没有使用严格模式。