为什么在这个例子中:
for(x in json) {
//something here
}
如果在我的脚本中放置x
,是我的变量'use strict';
未定义。
答案 0 :(得分:0)
如果我没记错的话,当您收集时,x
将被取消定义:[undefined, undefined]
。
数组已填充,但元素为undefined
答案 1 :(得分:0)
x
似乎没有在循环中定义,因此您需要使用
for(var x in json) {
//something here
}
答案 2 :(得分:0)
strict mode
放在作用域中激活的 'use strict';
会阻止您使用代码中尚未声明的变量。这样做是为了防止创建全局变量,这是非严格模式下浏览器的默认行为。所以在你的情况下你需要做
for(var x in json) {
// your code here
}
这样变量x将被创建,提升并准备好在严格模式下被循环使用。
答案 3 :(得分:0)
在严格模式下,变量总是必须在分配或使用之前定义。这意味着,你必须写
for (var x in json) ...
或
var x;
for (x in json) ...
在没有严格模式的情况下允许您执行的操作,但这是一种坏习惯,因为它会在全局范围中自动声明变量x
。很多程序员都做错了,甚至在一些参考/教程中也是如此。
答案 4 :(得分:0)
是的,它会给你一个错误,因为在严格模式下,我们必须在实际之前声明变量,我们开始使用它们。
你可以试试这个。
for(var x in json) {
//something here
}