不知道为什么这段代码给我一个错误。 “ i”似乎没有定义,有人可以解释一下吗

时间:2018-10-16 15:55:02

标签: javascript

在下面的代码中,我收到一个错误,其中未定义“ i”,有人可以对此进行解释。如何更好地格式化?

'use strict';

var a = 1

for( i = 0; i <= 1; i++ ) {
    var b = a + i;
}

function Math(a) {
    console.log(a, ' + ', b, ' = 3');
}

Math(a);

3 个答案:

答案 0 :(得分:3)

Strict mode

  

严格模式是ECMAScript 5中的一项新功能,可让您将程序或功能置于“ 严格”操作环境中。此 strict 上下文会阻止执行某些操作并引发更多异常。

由于您是以 严格模式 编写代码的,因此必须在for循环中显式声明变量i

'use strict';

var a = 1

for( var i = 0; i <= 1; i++ ) {
    var b = a + i;
}

function Math(a) {
    console.log(a, ' + ', b, ' = 3');
}

Math(a);

答案 1 :(得分:2)

在严格模式下,“分配会意外创建全局变量,而引发错误”

因此,您有两种选择:

  1. 通过删除'use strict;'
  2. 禁用严格模式
  3. 声明i变量:

    for(var i = 0; i <= 1; i ++){   var b = a + i; }

有关MDN上严格模式的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

答案 2 :(得分:1)

由于您using stricti必须先声明,然后才能在for循环中使用。您可以通过在for循环中声明i来解决此问题,例如:

for(let i = 0; i <= 1; i++ ) {
    var b = a + i;
}