Javascript ReferenceError:Strict模式禁止在承诺上的for循环中隐式创建全局属性
我有一个非常奇怪的问题。我试图对承诺返回值执行for循环。当我从jasmine测试运行代码时,它会中断。当我从浏览器运行它时,它会断开。代码是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
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
声明变量,你没有使用严格模式。