在undefined中使用Javascript“use strict”

时间:2017-05-16 23:36:04

标签: javascript

为什么在这个例子中:

for(x in json) {
   //something here
}
如果在我的脚本中放置x

是我的变量'use strict';未定义。

提前thx。

5 个答案:

答案 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
}