在下面的代码中,我收到一个错误,其中未定义“ 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);
答案 0 :(得分:3)
严格模式是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)
在严格模式下,“分配会意外创建全局变量,而引发错误”
因此,您有两种选择:
'use strict;'
声明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 strict
,i
必须先声明,然后才能在for循环中使用。您可以通过在for循环中声明i
来解决此问题,例如:
for(let i = 0; i <= 1; i++ ) {
var b = a + i;
}